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