技巧一:命令行執行html
命令執行:指定參數,報告的存儲位置java
jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl -e -o /home/resultReportshell
-n : 非GUI 模式執行JMeterapache
-t : 執行測試文件所在的位置及文件名api
-r : 遠程將全部agent啓動用在分佈式測試場景下,不是分佈式測試只是單點就不須要-r併發
-l : 指定生成測試結果的保存文件, jtl 文件格式app
-e : 測試結束後,生成測試報告分佈式
-o : 指定測試報告的存放位置測試
注意事項:url
一、-o 指定的文件及文件夾,必須不存在 ,不然執行會失敗,對應上面的命令就是resultReport文件夾必須不存在不然報錯
二、只有自動結束纔會生成測試報告,強制結束執行不會生成測試報告
技巧二:階梯壓測
Concurrency Thread Group和Stepping Thread Group兩種線程組均可用於階梯式加壓測試,可是因爲Stepping Thread Group已經再也不被官方推薦使用了,咱們對Concurrency Thread Group進行介紹。
target concurrency:目標併發數
ramp up time(min):加速時間
ramp-up steps count:加速步驟計數
hold target rate time(min):保持目標速度時間
thread iterations limit:線程迭代次數限制
log threads status into file:將線程狀態記錄到文件
以上,以圖形的方式展現了線程加壓的過程。
技巧三:控制請求數(QPS)壓測
Arrivals Thread Group咱們能夠經過該線程組達到控制請求數的目的
target rate:目標速率,每秒鐘多少個請求數
ramp up time(sec):達到目標速率須要的時間
ramp-up steps count:達到目標速率須要多少步
hold target rate time(sec):保持目標速率時間
thread iterations limit:線程迭代次數限制
log threads status into file:將線程狀態記錄到文件
concurrency limit:最大併發數限制
技巧四:權重控制壓測
weighted switch controller 控制權重百分比的場景控件
技巧五:調試腳本添加Debug PostProcessor
通常是在須要添加正則(Regular Expression Extractor)、Xpath Extractor、 JSON Path Extractor等提取器的時候或者在參數化的時候,添加一個Debug PostProcessor,這樣方便在調試腳本的時候,
看是否正確的提取到了所要的信息。固然,得添加View Result Tree,由於執行腳本之後是在tree裏看debug的信息
技巧六:benshell使用
JMeter在它的BeanShell中內置了變量,用戶能夠經過這些變量與JMeter進行交互,其中主要的變量及其使用方法以下:
log:寫入信息到jmeber.log文件,使用方法:log.info(「This is log info!」);
ctx:該變量引用了當前線程的上下文,使用方法可參考:org.apache.jmeter.threads.JMeterContext。
ctx.getCurrentSampler(); 獲取當前 sampler 請求
ctx.getPreviousSampler(); 獲取前一個 sampler 請求
ctx.getThreadNum(); 獲取當前線程的序號,從 0 開始計數
ctx.getThread(); 獲取當前線程
ctx.getThreadGroup(); 獲取當前線程組
ctx.getProperties(); 獲取全部屬性
ctx.getVariables(); 獲取當前線程的全部變量
vars - (JMeterVariables):操做jmeter變量,這個變量實際引用了JMeter線程中的局部變量容器(本質上是Map),它是測試用例與BeanShell交互的橋樑,經常使用方法:
a) vars.get(String key):從jmeter中得到變量值
b) vars.put(String key,String value):數據存到jmeter變量中
更多方法可參考:org.apache.jmeter.threads.JMeterVariables
props - (JMeterProperties - class java.util.Properties):操做jmeter屬性,該變量引用了JMeter的配置信息,能夠獲取Jmeter的屬性,它的使用方法與vars相似,可是隻能put進去String類型的值,而不能是一個對象。對應於java.util.Properties。
a) props.get("START.HMS"); 注:START.HMS爲屬性名,在文件jmeter.properties中定義
b) props.put("PROP1","1234");
prev - (SampleResult):獲取前面的sample返回的信息,經常使用方法:
a) getResponseDataAsString():獲取響應信息
b) getResponseCode() :獲取響應code