問題:
壓力測試時,手工一個個加壓效率較低
希望腳本循環執行,每次增加一點壓力,生成原始數據報告
測試結束后,人工根據測試報告數據去檢測壓力情況即可
解決方法:
一、腳本中進程組參數化
外部傳參用${__P(threadNum,1)}定義
見下圖
不止線程組參數,若接口中調用的其他參數也可以通過命令行指定
二、bat腳本和jmx腳本在同一目錄,bat腳本配置好加壓策略后,運行即可
set PRO_DIR=%~dp0 set loop=1 set rampUp=0 set durTime=60 ::For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) ::For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b) for /f "delims=" %%a in ('wmic os get localdatetime /value') do set "%%a" set time=%localdatetime:~0,14% cd "D:\apache-jmeter-5.1.1-ant-all plugins\apache-jmeter-5.1.1\bin" for /l %%i in (10,10,10) do ( jmeter.bat -n -t %PRO_DIR%share.jmx -l %PRO_DIR%%time%_durTime#%durTime%_rampUp#%rampUp%_loop#%loop%_threadNum#%%i.jtl -JthreadNum=%%i -JrampUp=%rampUp% -JdurTime=%durTime% -Jloop=%loop%) pause
bat腳本運行結束后,jmeter GUI界面添加任意的監聽器格式,打開上述jtl文檔后,即可查看報告
三、其他說明
命令行調用參數 -J 和 -G
1、格式:-J變量名=值 -G變量名=值
2、相同之處:設置jmeter屬性,例如線程數、循環次數、ramp up-time等
3、不同之處:-J是設置本地jmeter屬性;-G是設置server的jmeter屬性(只有設置了遠程機,開啟了遠程服務,才需要用到-G)
4、以設置本地jmeter屬性為例,先在windows下編輯腳本,將線程數、循環次數、ramp up-time等參數化
若要手動加壓,則直接命令行執行即可,參考如下
# 分布式調用
jmeter -n -t es.jmx -GthreadNum=1 -GdurTime=30 -Gstressmax=100 -l linuxjmx.jtl -Gpro="jmxmaster" -R 192.168.240.2,192.168.240.3 # 本地模式調用 jmeter -n -t es.jmx -JthreadNum=1 -JdurTime=30 -Jstressmax=100 -l linuxjmx.jtl -Jpro="jmxmaster"
參考:
https://www.jianshu.com/p/03f4e864d94f