從04月換公司開始,就沒靜下來心來學習,其中發生了比較多的事情吧,不過不管如何,沒堅持學習還是因為懶。本周交接完,下周去入職新公司,該靜下心來學點什么了。
-----------------------------------------------------------分割線-------------------------------------------------------------
最近看到在Linux上折騰jmeter的人越來越多,不過即使在windows上,jmeter的腳本我還是建議用命令行來執行(降低GUI模式帶來的性能損耗,不過拿jmeter來做接口測試的無所謂)。做性能測試的時候,有時候可能需要不停的去設置“線程組”那個界面的參數(例如線程數、循環次數、持續時間等),而每次修改-->保存-->cmd中運行總感覺麻煩,那就找一種方法可以在命令行中直接指定參數的值。
查看相關資料實操,可以發現JMeter的測試計划在運行Sampler之前會先加載運行屬性(jmeter.properties,system.properties等)文件,而且JMeter還提供了方法可以動態修改屬性,在命令行中使用【-J】 來指定JMeter Properties,腳本里面使用__P() 函數來獲取命令中指定的屬性值,那么方法就出來了。
配置說明:
1、並發數設置為${__P(concurrent_number,1)},循環次數取消勾選Forever,設置為${__P(cycles,1)},其中后面的1是默認值,作用是執行一次來調試腳本,這是__P函數的功能(雖然我一直都是用GUI模式來調試腳本的)
2、執行時長設置為${__P(duration,60)},默認1分鍾(60s),如果同時設置了循環次數和執行時長,那么滿足其中一個條件腳本就會停止。
那么先試試吧,默認執行腳本,命令行如下:
jmeter -n -t \tmp\cnblgo.jmx(腳本的絕對路徑)
從上圖可以看出,腳本執行了一次,持續了0.7s,是OK的。
查看Jmeter的源碼,可知執行次數=-1時即表示Forever。以50並發執行120s的命令行如下:(為了直觀,我直接生成測試報告用web界面的形式看,否則-l后面的可以不寫)
jmeter -n -t C:\Users\zhoulinjie\Desktop\cnblgo.jmx -Jconcurrent_number=50 -Jduration=120 -Jcycles=-1 -l report.jtl -e -o C:\Users\zhoulinjie\Desktop\report
打開生成的測試報告文件,index.html,如下:
還有其他的組合就不截圖了,需要什么參數,直接用-J+${}+__P()即可。同理,線程組界面中的Ramp-Up Period(in seconds)也是可以通過這種方式設置的。