Jmeter’s nonGUI模式
为什么需要使用Jmeter的命令行?
- 性能:同样的资源下,使用命令行能够获得更好的性能表现,即可以提供更多的负载。
- 持续集成的需要:所有和Jmeter的集成,都是基于jmeter的命令行。
配置Jmeter环境变量
新添加一个环境变量JMETER_HOME
值为:D:\Program Files\apache-jmeter-5.3
在path中添加:%JMETER_HOME%\bin
检查是否添加成功
jmeter --version
常用的命令参数
-
-?
:是用来列出jmeter的参数列表
-
--version
:用来显示当前Jmeter的版本
-
-n
:表示以nonGUI模式,即命令行模式运行jmeter(该参数不能单独使用,至少要结合-t参数才可以执行) -
-t
:表示testplan,用来执行需要执行的jmeter的脚本。
jmeter -n -t xxx.jmx
-l
:表示log,用来指定存储jmeter的测试结果的结果文件(一般来说建议结果文件的后缀名为*.jtl
)
jmeter -n -t xxx.jmx -l results/t1.jtl
生成的Log文件信息
注意事项:
- 产生的结果文件jtl,可以在GUI模式下通过添加所需要的监听器组件来读取显示。
- 两次运行,如果结果文件的名称相同,则jmeter采用的是追加而不是覆盖的方式。一般来说,建议两次文件的名称要不一样。
- 命令行运行脚本时,在GUI模式下所添加的监听器组件及组件的设置对结果没有任何影响。最终写入结果文件的内容取决于Jmeter的配置文件。
报告生成
在jmeter的命令行模式,是支持直接生成HTML格式的报告。
-e
:表示生成HTML格式的测试报告(该参数不能单独使用,需要结合参数-o
一起使用)-o
:表示用来执行输出HTML报告的目录(要求必须是空目录或者不存在的目录)
jmeter -n -t xxx.jmx -l results/t3.jtl -e -o results/h1
-g
:表示通过已经存在的结果文件来生成HTML格式的报告,需要结合-o
参数使用
jmeter -g results\t1.jtl -o results\h2
生成的HTML文件
调度传参
通过jmeter的命令行来执行脚本时,是可以通过命令行的参数来传递值到jmeter的脚本中。
- 1、更改
jmeter
脚本(对于希望通过命令行传参来控制值的地方,我们需要将常量值替换为属性变量的调用格式)
使用P函数:${__P(thread.num,1)},替换常量线程数
- 2、在使用命令行模式执行
jmeter
的脚本时,可以通过-D
/-J
参数来传递参数值
-D, --systemproperty {argument}={value}
JAVA系统属性
-J, --jmeterproperty {argument}={value}
JMeter 本地属性
jmeter -n -t xxx.jmx -l results\t4.jtl -Dthread.num=10 -Dloop.num=5
jmeter -n -t xxx.jmx -l results\t4.jtl -Jthread.num=10 -Jloop.num=5
查看运行是否是指定的线程数