在使用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方式運行時還是比較方便的。
自然性能測試自動化時我們可以利用這些命令行參數來動態指定屬性,不用再修改腳本了。