jmeter命令行执行脚本(包括指定执行线程数,循环次数,远程执行)
平时用jmeter做接口测试或者性能测试的时候,基本都是直接在jmeter客户端维护脚本以及调试,但是最后的执行最好是用命令行执行,尤其是性能测试或者自动化测试的时候吗,因为命令行执行可以降低GUI模式带来的性能损耗
但是经常会有执行前需要修改脚本中的参数的情况,比如调整全局变量或者线程数,循环次数等
网上找到资料:JMeter的测试计划在运行Sampler之前会先加载运行属性(jmeter.properties,system.properties等)文件,而且JMeter还提供了方法可以动态修改属性,在命令行中使用【-J】 来指定JMeter Properties,脚本里面使用__P() 函数来获取命令中指定的属性值:
并发数设置为${__P(concurrent_number,1)},循环次数取消勾选Forever,设置为${__P(cycles,1)},其中后面的1是默认值,作用是执行一次来调试脚本
接下来打开cmd命令窗口,输入脚本命令,-J加上之前设置的变量=XXX即可指定变量的值,比如-Jconcurrent_number=10,说明制定了10个线程数,-Jcycles=10,说明循环5次;另外其中-n是说明用命令行执行,-t是指定了执行的脚本路径,-l是指定日志路径,-e是说测试结束生成测试报告 -0指定测试报告路径,如果测试报告目录不存在,新建一个并存入报告
具体参考:https://blog.csdn.net/qq_24394093/article/details/90732577
执行:--执行完成提示end of run
查看日志和测试报告(打开report里面的index.html):
如上就是通过命令行指定参数执行脚本的过程啦,但是问题来了,因为我们的脚本之后基本都是要共享的,脚本不会放在本地,基本都会放在测试服务器上,如果每次都登录测试服务器去执行,也有一点麻烦,那么也可以通过参数指定执行的测试服务器
-r指定在远程机器上跑测试,执行后会去jmeter.properties中去找remote_hosts这个参数的参数值,这个值可以配置多个,多个服务器之间用逗号隔开
注意:使用这种方式需要先配置远程机器,参考:https://www.cnblogs.com/miniren/p/6515009.html
主要包括:1)远程测试服务器的jdk和Jemter版本必须和本测试机一致,否则可能会因为版本原因失败;2)如果引用csv参数文件的,那么服务器上也需要放上参数文件,且与本地机器路径相同;3)每个远程节点上只能有一个Jmeter从机器,除非我们使用不同的RMI端口;4)系统关闭防火墙,或者开放特定端口,5)主机器和所有从机器最好在同一个子网内;6)服务器需要启动jmeter-server.bat
第一种方式执行:1、通过GUI方式启动--本地主机,可以选择需要启动的远程测试机,也可以直接选择远程启动所有
第二种方式执行:1、命令行启动,启动jmeter.properties中指定的所有主机:jmeter -n -t script.jmx -r;
2、命令行启动,自定义需要启动的主机:jmeter -n -t script.jmx -R server1,server2,…
命令行后面跟上-x代表指定在测试结束后退出执行
以上