jmeter使用筆記
生成測試報告(類似LR的測試報告)
jmeter.bat -n -t 線程組.jmx -l csvlog.log -e -o Report
引用jar包
將自己開發(fā)的java文件生成jar包引用到j(luò)meter中可以實(shí)現(xiàn)jmeter無法實(shí)現(xiàn)的一些功能,例如加密等
方法:
1、較為規(guī)范的方法:將jar包文件放入jmeter的解壓目錄下的lib/ext下,之后在jmeter的GUI界面中的測試計劃選項中測試計劃,在測試計劃中最下方的library中加入自己要用的jar包,之后再腳本中引入需要使用的jar包比如:
import xxxx
xxxx.xxx.xxx(和java中調(diào)用方法的用法一致)
2、比較隨意的方法:將jar包隨意放置位置,使用方法與上面一致。
BeanShell的使用
在前置選擇器中選擇beanshell,加入該選項,其中語法與java一致,傳遞參數(shù)使用vars.put("名稱",名稱)、獲取參數(shù)使用vars.get("名稱",名稱)
注:使用java傳遞參數(shù)是,參數(shù)需要進(jìn)行URL編碼
轉(zhuǎn)換Unicode編碼
//獲取響應(yīng)代碼Unicode編碼的
? ? ? ? String s2=new String(prev.getResponseData(),"UTF-8");
//---------------一下步驟為轉(zhuǎn)碼過程---------------
? ? ? ? char aChar;
? ? ? ? int len= s2.length();
? ? ? ? StringBuffer outBuffer=new StringBuffer(len);
? ? ? ? for(int x =0; x <len;){
? ? ? ? ? ? aChar= s2.charAt(x++);
? ? ? ? ? ? if(aChar=='\\'){
? ? ? ? ? ? ? ? aChar= s2.charAt(x++);
? ? ? ? ? ? ? ? if(aChar=='u'){
? ? ? ? ? ? ? ? ? ? int value =0;
? ? ? ? ? ? ? ? ? ? for(int i=0;i<4;i++){
? ? ? ? ? ? ? ? ? ? ? ? aChar= s2.charAt(x++);
? ? ? ? ? ? ? ? ? ? ? ? switch(aChar){
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'0':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'1':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'2':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'3':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'4':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'5':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'6':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'7':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'8':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'9':
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? value=(value <<4)+aChar-'0';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'a':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'b':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'c':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'd':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'e':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'f':
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? value=(value <<4)+10+aChar-'a';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'A':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'B':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'C':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'D':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'E':
? ? ? ? ? ? ? ? ? ? ? ? ? ? case'F':
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? value=(value <<4)+10+aChar-'A';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? throw new IllegalArgumentException(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "Malformed? \\uxxxx? encoding.");}}
? ? ? ? ? ? ? ? ? ? outBuffer.append((char) value);}else{
? ? ? ? ? ? ? ? ? ? if(aChar=='t')
? ? ? ? ? ? ? ? ? ? ? ? aChar='\t';
? ? ? ? ? ? ? ? ? ? else if(aChar=='r')
? ? ? ? ? ? ? ? ? ? aChar='\r';
? ? ? ? ? ? ? ? ? ? else if(aChar=='n')
? ? ? ? ? ? ? ? ? ? aChar='\n';
? ? ? ? ? ? ? ? ? ? else if(aChar=='f')
? ? ? ? ? ? ? ? ? ? aChar='\f';
? ? ? ? ? ? ? ? ? ? outBuffer.append(aChar);}}else
? ? ? ? ? ? ? ? outBuffer.append(aChar);}
//-----------------以上內(nèi)容為轉(zhuǎn)碼過程---------------------------
//將轉(zhuǎn)成中文的響應(yīng)結(jié)果在查看結(jié)果樹中顯示
? ? ? ? prev.setResponseData(outBuffer.toString());
如何設(shè)置固定QPS
添加組件Constant Throughput Timer
參數(shù)說明:Target throughput 設(shè)置每分鐘可以達(dá)到的吞吐量,注(以分鐘為單位)
calculate Throghput based on? 作用域(一般選擇 all active threads)