问题背景
前两天,自己在搭建好了jmeter+Jenkins自动化性能测试后思考,若有时候我们需要修改并发数、测试时长或者请求地址变了之类的,难道我们需要一个个的去修改脚本么?有么有更加便利的方法?
解决方法
利用Jmeter 命令行下动态化参数传递和Jenkins的build with parameter。(大家有更好的方法,欢迎大家公众号里微我,分享出来一起进步)
具体操作
我们知道JMeter测试计划在运行Sampler之前会先加载运行属性(jmeter.properties,system.properties等)文件,而且JMeter还提供了方法可以动态修改属性,在命令行使用 -J 来指定JMeter Properties,脚本里面使用__P() 函数来获取命令中指定的属性值。
1、编写jmx脚本
在需要动态化参数的地方按照如下方式填写,此处是对线程数和持续时间进行了定义。
2、用命令行运行时候增加如下选项。
-JthreadCount=${thread_num}为脚本指定的线程数
其中thread_num变量值可以动态的从Jenkins页面自己填写。
-Jduration=${test_time}为测试计划要指定的测试时长
其中test_time变量值可以动态的从Jenkins页面自己填写。
3、配置Jenkins的build with parameter
安装插件build with parameter
然后在构建的按钮就会变成
这样每次构建都可以动态的传递参数值了,不用再手工去修改脚本。
简要验证
经过上面的配置后,接下来进行简要验证,配置是否正确。大家在点击build with parameter按钮后,弹出如下对话框,在这里我填写的线程数目是15,测试时长是30s。
点开构建运行时的控制台输出,可以看到,jmeter命令行正确的获取了前面填写的线程数值和测试时长。OK,大功告成!!!
ps:大家也可以用类似的方法尝试进行便捷的控制分布式压测。