1. 程式人生 > >JMeter非GUI方式執行時動態設定執行緒組及傳參

JMeter非GUI方式執行時動態設定執行緒組及傳參

在使用JMeter進行效能測試自動化時,可能會有如下需求:

1.指定執行多少執行緒,指定執行多少次;

2.訪問的目標地址變化了,埠也變化了,需要重新指定。

上面的需求如果有GUI方式執行,這都不是問題,直接在指令碼上進行修改即可以了。

但是效能測試自動化是以非GUI方式執行的,如果要修改測試計劃就比較麻煩了。

下面來說說如何簡單的搞定這些問題:

1.指定執行多少執行緒

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

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

(jmeter.bat  -help | jmeter.sh -help可以看到幫助),使用__P() 函式來獲取命令中指定的屬性值。

看一下例項: 

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

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

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

在baidu.jmx測試計劃中用${__P(threadCount,)}來獲取threadCount的值;${__P(cycle,)}來獲取cycle的值。


執行效果如下:


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

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方式執行時還是比較方便的。

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