随着性能测试普及,大家开始更多的接触性能测试以及性能测试工具。jmeter是初学者绕不开的一个工具,简单易上手,覆盖面广,且开源支持脚本开发。
在实际使用当中,初期的脚本录入、接口调试、参数配置等我们都是基于GUI模式来进行,清晰明了,效果直观;但是脚本确定后我们会批量的去执行这些脚本,并生成对应的测试报告,此时GUI模式就无法满足我们的要求,
这里jmeter的脚本建议用命令行来执行(同时降低GUI模式带来的性能损耗,不过拿jmeter来做接口测试的无所谓)。
做性能测试的时候,有时候可能需要不停的去设置"线程组"那个界面的参数(例如线程数、循环次数、持续时间等),而每次修改→保存→cmd中运行总感觉麻烦,那就找一种方法可以在命令行中直接指定参数的值,查看
相关资料实操,可以发现JMeter的测试计划在运行Sampler之前会先加载运行属性(jmeter.properties,system.properties等)文件,而且JMeter还提供了方法可以动态修改属性,在命令行中使用【-J】 来指定JMeter Properties,
脚本里面使用__P() 函数来获取命令中指定的属性值,那么方法就出来了。
配置说明:
1、并发数设置为${__P(concurrent_number,1)}
2、循环次数取消勾选Forever,设置为${_P(cycles,1)},其中后面的1是默认值,作用是执行一次来调试脚本,这是_P函数的功能
3、执行时长设置为${__P(duration,60)},默认1分钟(60s),如果同时设置了循环次数和执行时长,那么满足其中一个条件脚本就会停止。
4、线程组界面中的Ramp-Up Period(in seconds)设置的${__P(period,1)}默认为1。当设置为0时,代表同时并发,一般不设为0;Ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。 一般设置ramp-up=线程数启动,并上下调整到所需的。
命令行执行
1、默认执行脚本,命令行如下:
jmeter -n -t C:\Users\20183\Desktop\SmartBI.jmx(脚本的绝对路径)
*注:在命令行执行jmeter命令,需要配置jmeter的系统环境变量,否则要在jmeter的bin目录下执行jmeter命令,命令行如下:
C:\Program Files\apache-jmeter-5.2.1\bin> jmeter -n -t C:\Users\20183\Desktop\SmartBI.jmx
2、查看Jmeter的源码,可知执行次数=-1时即表示Forever。以100并发执行600s的命令行如下:(为了直观,我直接生成测试报告用web界面的形式看,否则-l后面的可以不写)
jmeter -n -t C:\Users\20183\Desktop\cnblgo.jmx -Jconcurrent_number=100 -Jduration=600 -Jcycles=-1 -l report.jtl -e -o C:\Users\20183\Desktop\report
打开生成的测试报告文件,index.html,如下:
还有其他的组合就不截图了,需要什么参数,直接用-J+${}+__P()即可。
3、在命令行执行每次也只能执行一个脚本,只是方便了参数的配置;为了实现批量脚本执行,我们可以把命令写成bat批跑脚本来执行,一次维护批量执行。
参考文档:https://www.cnblogs.com/zichuan/p/11262997.html