1. 程式人生 > >JMeter命令模式下動態設定執行緒組和持續時間等動態傳參

JMeter命令模式下動態設定執行緒組和持續時間等動態傳參

背景:

1.當通過JMeter的影象化介面執行效能壓測或者場景時候,JMeter介面很容易導致介面卡死或者無響應的情況(20個執行緒數就會卡死)

現象如下:

解決方案:

jmeter -n -t D:\apache-jmeter-3.0\bin\log.jmx -l D:\apache-jmeter-3.0\bin\log.jtl

此時執行緒數設定大一點,也不會卡死

2.當除錯指令碼或者執行場景時候,需要不斷的調整執行緒數或者持續執行時間時候,需要先開啟GUI介面,修改如下引數並儲存

解決方案:

1.指定執行多少執行緒

我們知道JMeter測試計劃在執行Sampler之前先載入執行屬性(jmeter.properties,system.properties等),那麼我們可以藉助屬性來完成。

當然了,我們也不會傻到去修改這些配置檔案,這多麻煩。JMeter提供了方法可以動態修改屬性,在命令列使用 -J 來指定JMeter Properties

使用__P() 函式來獲取命令中指定的屬性值。

例項如下:

jmeter -JthreadNum=20 -Jtime=300 -n -t D:\apache-jmeter-3.0\bin\log.jmx -l D:\apache-jmeter-3.0\bin\log.jtl

jmeter.bat -JthreadCount=2 -Jcycle=2 -n -t log.jmx -l log.jtl

 threadNum=2為log.jmx測試計劃要指定的執行緒數

-Jcycle=2為log.jmx測試計劃要指定的每個執行緒的迭代次數

-Jtime=10為log.jmx測試計劃要指定的持續執行時間

在log.jmx測試計劃中用{__P(threadNum,)}來獲取threadNum的值;{__P(threadNum,)}來獲取threadNum的值;{__P(cycle,)}來獲取cycle的值,${__P(time,)}來獲取time的值

執行效果如下:

拓展知識:

如果訪問的目標地址變化了,埠也變化了,重新指定:

JMeter 命令列通過-D來指定System Properties,類似於Jdk中我們用-D來指定一些系統屬性,比如開啟JMX遠端監控。

在JMeter指令碼中我們用__property()函式來獲取,比如-Durl=www.baidu.com在測試計劃中用${__property(url,,)}來獲取

執行命令如下:

jmeter.bat -JthreadCount=2 -Jcycle=2 -Durl=www.baidu.com -Dport=80 -n -t baidu.jmx -l baidu.jtl

 指令碼如下:

如上使用-J -D在執行前動態設定屬性,可以用來控制測試計劃的執行,在非GUI方式執行時還是比較方便的。

自然效能測試自動化時我們可以利用這些命令列引數來動態指定屬性,不用再修改指令碼了。