JMeter命令模式下动态设置线程组和持续时间等动态传参
一、前言
在我们使用命令行进行脚本压测的时候,线程数一般是写死的,每次想要修改的时候,都是需要通过jmeter的GUI界面,这种方法比较繁琐,那么有没有比较好的解决方案呢,答案肯定是有的。
二、解决方案
改进前
./jmeter -n -t CloudStorage/CloudStorage.jmx -l CloudStorage/CloudStorage.jtl
1、指定运行多少线程
JMeter提供了方法可以动态修改属性,在命令行使用 -J 来指定JMeter Properties,使用__P() 函数来获取命令中指定的属性值
那么可以修改为:
./jmeter -JthreadNum=20 -Jtime=300 -Jtime=10 -n -t CloudStorage/CloudStorage.jmx -l CloudStorage/CloudStorage.jtl
参数说明:
JthreadNum=20为CloudStorage.jmx测试计划要指定的线程数
-Jcycle=300为log.jmx测试计划要指定的每个线程的迭代次数
-Jtime=10为log.jmx测试计划要指定的持续运行时间
2、修改CloudStorage.jmx文件,接收动态属性的值
在CloudStorage.jmx测试计划中用{__P(threadNum,)}来获取threadNum的值;{__P(cycle,)}来获取cycle的值,${__P(time,)}来获取time的值
备注:
当访问的URL和端口都修改了,可以使用 Durl=www.baidu.com -Dport=80,来动态传值,命令行为:
jmeter.bat -JthreadCount=2 -Jcycle=2 -Durl=www.baidu.com -Dport=80 -n -t baidu.jmx -l baidu.jtl
脚本为:
三、小结
使用-J -D在运行前动态设置属性,可以用来控制测试计划的执行,在非GUI方式运行时还是比较方便的。自然性能测试自动化时我们可以利用这些命令行参数来动态指定属性,不用再修改脚本了。
参考: