jmeter壓測實踐

技巧一:命令行執行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!」);

  •  beanshell斷言 Failure=true/false
  • 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

相關文章
相關標籤/搜索