Jmeter 自动循环执行,逐步加压
问题:
压力测试时,手工一个个加压效率较低
希望脚本循环执行,每次增加一点压力,生成原始数据报告
测试结束后,人工根据测试报告数据去检测压力情况即可
解决方法:
一、脚本中进程组参数化
外部传参用${__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