非GUI方式是没有jmeter界面的,我们在命令窗口通过命令行来运行场景,之所以要非gui方式运行是因为jmeter可视化界面及监听器动态展示结果都比较消耗负载机资源,在大并发情况下GUI方式往往会导致负载机资源紧张,会对性能测试结果造成影响。当然了,这个影响并不是说被测系统的性能受到影响,比如响应时间变大之类,而是影响了负载量的生成,比如非GUI方式100个线程可以产生100TPS的负载,而GUI方式只产生80TPS的负载,如果一台机器只能支持100个线程运行,那么我们只有多加机器来运行测试计划,这样一台负载机变成两台。所以推荐用非GUI的方式来运行测试计划。另外在测试执行时提醒大家关注负载机性能,可以多架设几台jmeter负载机来减轻单机负载机的压力。非GUI方式虽然不显示界面,但也会以字符形势周期性显示执行结果,对负载机的资源消耗会小一些。所以同等条件下,非GUI方式的jmeter机器能够产生的负载会比GUI方式的jmeter产生的负载大一些。
JMETER非GUI运行的命令
命令 | 非GUI方式运行 |
---|---|
-n | 非GUI方式运行 |
-t | 指定运行的测试脚本的地址与名称,可以是相对路径,相对路径的根是命令窗口 的当前路径 |
-h | 查看帮助 |
-v | 查看版本 |
-p | 指定读取jmeter属性文件 |
-l | 记录测试结果到文件 |
-s | 以服务器方式运行(就是我们说的远程方式,启动agent) |
-H | 设置代理,一般填写代理ip |
-p | 设置代理端口 |
-u | 代理账号 |
-a | 代理口令 |
-j | 定义jmeter属性,等同于在jmeter.properties中进行设置 |
-G | 定义jmeter全局属性,等同于在Glabal.properties中进行设置,线程间可以共享 |
-D | 定义系统属性,等同于在system.properties中进行设置 |
-S | 加载系统属性文件,可以通过此参数指定加载一个系统属性文件,此文件可以用户自己定义 |
-L | 定义jmeter日志级别,比如DEBUG,INFO,ERROR等 |
-r | 开启远程负载机(非GUI方式),远程机列表在jmeter.properties中指定 |
-R | 开启远程负载机,-R 可以指定负载机ip,此选项会覆盖jmeter.properties中的remote_hosts的设置 |
-d | 指定jmeter home 目录 |
-X | 停止远程运行 |
操作步骤:
1、进入到jmeter的bin目录下,在地址栏中输入cmd,回车进入控制台
**
2、准备好脚本,输入命令
**
D:\jmeter\apache-jmeter-5.3\bin>jmeter -n -t script\易捷支付.jmx -l test\cli-2020071301.jtl -e -o test\resulthtml001
需要注意的事项:
- 输出的jtl和html所在文件夹不能为空
- jtl和html的名称不能重复
- 控制台中,执行命令的端口为4445,执行命令端口的范围为【4445,4455】,默认使用4445端口,如果被占用,依次往后使用其他端口。如果这10个端口都被占用,执行命令会提示错误。
3、执行结束后,生成了2个文件
我们查看一下jtl文件
查看下生成的html报告
下图显示测试报告的信息
性能指标指数(满意度)和请求概要
聚合报告和错误信息
图表