JMeter命令行执行+生成HTML报告

1、为什么用命令行模式

使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死;

所以一般采用的方式是在GUI模式下调整测试脚本,再用命令行模式执行;

命令行方式支持在多个环境下使用,windosw的dos环境下,也可以在linux环境上执行。

注意:使用命令执行jmeter脚本必须使用jmeter 3.0及以上版本。

2、怎么用

2.1、执行命令

复制代码
jmeter -n -t <testplan filename> -l <listener filename>
 
示例: jmeter -n -t testplan.jmx -l test.jtl
 
示例含义:表示以命令行模式运行testplan.jmx文件,输出的日志文件为test.jtl

2.2、参数介绍

Jmeter官方手册给的介绍如下:

复制代码
-h, --help -> prints usage information and exit
-n, --nongui -> run JMeter in nongui mode
-t, --testfile <argument> -> the jmeter test(.jmx) file to run
-l, --logfile <argument> -> the file to log samples to
-r, --runremote -> Start remote servers (as defined in remote_hosts)
-H, --proxyHost <argument> -> Set a proxy server for JMeter to use
-P, --proxyPort <argument> -> Set proxy server port for JMeter to use

中文释义:

复制代码
-h 帮助 -> 打印出有用的信息并退出
 
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
 
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
 
-l 日志文件 -> 记录结果的文件
  -R 远程执行  ->  远程执行机的IP(ip地址)如果有多个ip时,使用-R 192.168.2.170,192.168.2.171(分布式使用)
 
-r 远程执行 -> 在Jmter.properties文件中指定的所有远程服务器(分布式使用)
 
-H 代理主机 -> 设置 JMeter 使用的代理主机
 
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号

2.3、执行过程

命令:jmeter -n -t C:\Users\yzs\Desktop\Unione_performance.jmx -l report\03-result.jtl

不在jmeter安卓目录执行脚本的前提是配置了jmeter的环境变量。

2.4、报告查看

上述的命令有测试结果保存到D:\report中,在GUI模式下查看测试报告:

1、在测试计划下,添加对应的测试报告元件,举例增加了:查看结果树、聚合报告

2、在"所有数据写入一个文件",选择加载对应的结果文件

3、下面就会有对应的表格展示,具体见下图

2.5、命令行传递变量值

设置线程组的线程数和循环次数。

注意格式:

${__P(threadNum)}

${__P(threadCount)}

其中P前面是两个下划线,()内就是变量名

执行时,在命令行中用-J参数给变量赋值即可:

jmeter -n -t C:\Users\yzs\Desktop\Unione_performance.jmx -J threadNum=10 -J threadCount=2 -l report\03-result.jtl

此次测试相当于:10个线程,循环2次,共计20个请求。

3、生成HTML报告

生成HTML报告有2种方式,一种是直接在命令行加上-o参数,另一种是已有jtl结果文件,运行命令生成报告

3.1、命令行直接生成报告

jmeter -n -t 【Jmx脚本位置】-l 【中间文件result.jtl位置】-e -o 【报告指定文件夹】

-e:测试结束后,生成测试报告

-o:指定测试报告的存放位置

注意:-o后面跟的文件夹一定是不存在的 或者是空文件夹

3.2、已有jtl结果文件,运行命令生成报告

复制代码
jmeter -g【已经存在的.jtl文件的路径】-o 【用于存放html报告的目录】

注意:经实操,windows系统上,以上2种方法都可以生成HTML测试报告,但是在Linux系统上第1种方法,没有生成报告,只有第二种方法才可以(具体原因后面在慢慢找吧)

3.3、HTML报告注解

用浏览器打开index.html

报告详解

Dashboard:(重点查看)

Test and Report informations:指的是测试和报告信息

File:测试结果的保存文件名称

Start Time:测试开始时间

End Time:测试结束时间

Filter for display展示过滤器

APDEX(Application Performance Index):应用程序性能满意度的标准

其中,

"Apdex"范围在0-1之间,1表示达到所有用户均满意,越接近1满意度越高

"toleration threshold":耐受阈值(0.5秒)

"frustration threshold":挫败阈值(1.5秒)

Requests Summary:请求的通过率(OK)与失败率(KO),百分比显示

Statistics:数据分析,基本将Summary Report和Aggrerate Report的结果合并(平均响应时间、TPS在此查看)

Errors:错误情况,依据不同的错误类型,将所有错误结果展示

关于Apdex的补充:

性能指数,Apdex(Application Performance Index)是一个国际通用标准,Apdex 是用户对应用性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,把最终用户的体验和应用性能作为一个完整的指标进行统一度量。下图表示为通用用户满意度区域,0代表没有满意用户,1则代表所有用户都满意。实际业务系统开发过程中,1是团队的追求目标。

若所有请求的Apdex值都接近1,说明用户满意度优秀,也从侧面说明了服务器响应速度快。

通常而言,最低要求超过0.5,当然项目组可设定具体需求。

Charts:(辅助分析)

主要有如下特点:

(1)将测试过程中经常使用的数据,用图表的形式展示,让测试结果更加直观

(2)每个图表数据,有两种展示形式

(3)支持请求样例过滤显示

(4)支持导出PNG图片格式

Over Time Charts:

Response Times Over Time:每秒钟响应时间,X轴表示的是系统运行的时刻,Y轴表示的是响应时间,F(X,Y)表示系统随着时间的推移,系统的响应时间的变化,可以看出响应时间稳定性

Bytes Throughput Over Time:字节接收与发送的数量,每秒传输字节吞吐量,表明Jmeter在测试时,随着时间推移发送和接收的字节数

Latencies Over Time:延迟时间

Throughput Charts:

Hits Per Second: 每秒点击率

Codes Per Second:每秒状态码数量

Transactions Per Second:每秒事务量

Response Time Vs Request:响应时间点请求的成功与失败数

Latency Vs Request:延迟时间点请求的成功与失败数

Response Times Charts:

Response Time Percentiles:响应时间百分比

Active Threads Over Time:激活线程数

Time Vs Threads:响应时间用户数, X轴表示的是活动线程数,也就是并发访问的用户数,Y轴表示的是响应时间,F(X,Y)表示在某种并发量的情况下,系统的响应时间是多少

Response Time Distribution:响应时间分布

3.4、HTML报告的自定义配置

JMeter3.0开始在bin目录新增了reportgenerator.properties文件保存了所有关于图形化HTML报告生成模块的默认配置,要变更配置,建议不要直接编辑该文件,而是推荐在user.properties中去配置和覆盖。

3.4.1总体配置

总体配置都是以jmeter.reportgenerator.为前缀,如:jmeter.reportgenerator.overall_granularity=60000

overall_granularity:定义采样点粒度,默认为60000ms,通常在稳定性以外的测试中,我们可能需要定义更细的粒度,比如1000ms,我们可以在user.properties文件末尾添加如下配置

Change this parameter if you want to change the granularity of over time graphs.

jmeter.reportgenerator.overall_granularity=6000

report_title:定义报告的标题,我们可能需要将标题定义为实际测试项名称

apdex_satisfied_threshold:定义Apdex评估中满意的阈值(单位ms)

apdex_tolerated_threshold: 定义Apdex评估中可容忍的阈值

Apdext = (Satisfied Count + Tolerating Count / 2) / Total Samples

另外,在jmeter.properties中,有关于集合报告中的三个百分位的默认值:

aggregate_rpt_pct1 : Defaults to 50

aggregate_rpt_pct2 : Defaults to 70

aggregate_rpt_pct3 : Defaults to 99

3.5、HTML报告的定制

JMeter的HTML报告生成时是使用了固定的模板,模板文件路径为./bin/report-template。

进入该目录可以看到报告的每个页面都有一个.fmkr模板文件,包括index.html.fmkr和./content/pages路径下的几个文件。通过查看这些模板文件,就可以知道怎样去进行报告的轻度定制,比如将一些文本修改得更易懂,或者修改为中文等

页面的title

默认为"Apache JMeter Dashboard"

可以由reportgenerator.properties中的jmeter.reportgenerator.report_title来统一定义,这种方式就是所有页面的title都使用同一个。

也可以直接修改对应的.fmkr文件中的title标签中双引号内的值,如<title>${reportTitle!"想要设置的title"}</title>,这中方式可以为每个页面单独定义title

图表的名称

当前版本下,各图表的名称是直接在模板文件中定义,要修改也是直接修改模板文件中对应元素的值即可

如要修改Transactions Per Second图表的名称,可以直接在./content/pages/Throughput.html.fmkr文件中修改,效果如下图

相关推荐
测试老哥3 小时前
6个步骤实现Postman接口压力测试
自动化测试·软件测试·测试工具·测试用例·接口测试·压力测试·postman
007php00713 小时前
某大厂MySQL面试之SQL注入触点发现与SQLMap测试
数据库·python·sql·mysql·面试·职场和发展·golang
北岛三生18 小时前
ISP(图像信号处理器)
图像处理·数码相机·测试工具·计算机视觉·测试用例·模块测试
软测进阶19 小时前
【超详细图文教程】2025年最新 Jmeter 详细安装教程及接口测试示例
jmeter
JosieBook1 天前
【程序人生】有梦想就能了不起,就怕你没梦想
程序人生·职场和发展
北岛三生1 天前
Camera tuning flow相机调试流程
图像处理·数码相机·测试工具·模块测试
data myth2 天前
力扣1210. 穿过迷宫的最少移动次数 详解
算法·leetcode·职场和发展
晋人在秦 老K2 天前
入梦工具箱怎么检测硬件?3步完成CPU-Z跑分测试 硬件检测总出错?图吧工具箱免费功能实测 draw.io 部署指南:私有化流程图服务搭建教程
测试工具·流程图·工具·draw.io
Greedy Alg2 天前
LeetCode 240. 搜索二维矩阵 II
算法·leetcode·职场和发展