『动善时』JMeter基础 — 56、JMeter使用命令行模式生成HTML测试报告
[toc]
JMeter提供了一个用于生成HTML页面图形化报告的扩展模块。该模块支持通过两种方式生成多维度图形化测试报告。
- 在JMeter性能测试结束时,自动生成本次测试的HTML图形化报告。
- 使用一个已有的测试结果文件,如
.jtl
结果文件,.csv
结果文件,来生成该次测试结果的HTML图形化报告。
1、自动生成HTML图形化报告
自动生成HTML图形化报告的命令如下:
jmeter -n -t 【Jmx脚本位置】-l 【结果文件result.jtl存放的位置】-e -o 【生成HTML报告指定文件夹】
参数解释:
-n
:表示non gui mode
,就是非图形化模式。-t
:指定JMX脚本路径,即test plan
(测试计划)。后面跟需要运行的JMeter 脚本的路径和脚本名称。-l
:指定结果文件路径。后面跟输出结果文件路径和结果文件名称。 1)若没有指定指定结果文件路径,则自动创建,可以生成.csv
文件或者.jtl
文件。 2)若只写脚本名称,则默认是在当前目录查找或创建。-e
:设置测试完成后生成测试报表。-o
:指定测试报表生成文件夹。文件夹必须为空或不存在。
在CMD中进行到
%JMeter_Home%\bin位置,执行命令如下:
jmeter -n -t CLI_test.jmx -l C:\Users\L\Desktop\cli\result.jtl -e -o C:\Users\L\Desktop\cli\tableresult
如下图所示:
注意点:
result.jtl结果文件的输入位置,要和HTML报告文件夹的输入位置再同一个目录中。- 确认目标目录下没有结果文件。
- 确认
-o参数后面指定的文件夹,一定是不存在的或者是空文件夹。
然后去目标目录中查看HTML图形化报告文件夹中的内容。
打开
index.html文件,如下图所示:
2、使用已有的测试结果文件生成HTML报告
使用命令:
jmeter -g <log file> -o <Path to output folder>
参数说明:
-g
:指定已存在的测试结果文件路径,仅用于生成测试报表。-o
:指定测试报表生成文件夹,文件夹必须为空或不存在。
在CMD中进入到测试结果文件的所在目录,执行命令如下:
jmeter -g result.jtl -o C:\Users\L\Desktop\cunliu\output
之后就可以到指定的目录中查看生成的HTML报告了。
推荐配置JMeter的环境变量,这让就可以在任何目录中执行JMeter命令了。
3、HTML图形化报告内容详解
(1)Dashboard页面:(重点查看)
1)
Test and Report informations:指的是测试和报告信息。
File
:测试结果的保存文件名称。Start Time
:测试开始时间。End Time
:测试结束时间。Filter for display
:展示过滤器。
2)
APDEX(Application Performance Index):应用程序性能满意度的标准。其中:
Apdex
范围在0-1之间,1表示达到所有用户均满意,越接近1满意度越高。toleration threshold
:耐受阈值。frustration threshold
:挫败阈值。
3)
Requests Summary:请求的通过率(OK)与失败率(KO),百分比显示。
4)
Statistics:数据分析,基本将
Summary Report(汇总报告)和
Aggrerate Report(聚合报告)的结果合并。
5)
Errors:错误情况,依据不同的错误类型,将所有错误结果展示。
6)
Top 5 Errors by sampler:显示前5个错误的取样器。
(2)Charts页面:(辅助分析)
Charts页面:用图表的形式展示测试数据,让测试报告更加直观。
主要有如下特点:
- 将测试过程中经常使用的数据,用图表的形式展示,让测试结果更加直观。
- 每个图表数据,有两种展示形式。
- 支持请求样例过滤显示。
- 支持导出PNG图片格式。
Over Time for Charts页面:
1)
Response Times Over Time图表
每秒钟响应时间,X轴表示的是系统运行的时刻,Y轴表示的是响应时间,F(X,Y)表示系统随着时间的推移,系统的响应时间的变化,可以看出响应时间稳定性。
说明:响应时间变化曲线,展示平均响应时间随时间变化情况,类似于
JMeter Plugins在UI上的Response Times Over Time。
2)
Bytes Throughput Over Time图表
字节接收与发送的数量,每秒传输字节吞吐量,表明JMeter在测试时,随着时间推移发送和接收的字节数。
如下图所示:
说明:数据吞吐量时间曲线,展示每秒数据吞吐量随时间变化的情况,类似于
JMeter Plugins在UI上的Bytes Throughput Over Time。
3)
Latencies Over Time图表
延迟时间变化曲线:展示
Latency time随时间变化的情况,类似于
JMeter Plugins在UI上的
Response Latencies Over Time。
如下图所示:
4)
Response Time Percentiles Over Time (successful responses)图表
脚本运行时间内成功响应的请求,即:响应时间的百分位分布图。
如下图所示:
5)
Active Threads Over Time图表
脚本运行时间内的活动线程数变化曲线,展示测试过程中活动线程数随时间变化情况。
如下图所示:
6)
Connect Time Over Time图表
脚本运行时间内平均连接时间。
即:随时间变化,每个时间节点花费在连接上的平均时间。
如下图所示:
Throughput for Charts页面:
1)
HitsPer Second (excluding embedded resources)图表
每秒点击次数曲线图,即:每秒钟向服务器发送的请求数量。
如下图所示:
2)
CodesPer Second (excluding embedded resources)图表
每秒状态码数量分布曲线,即:每秒钟服务器返回的
ResponseCode数量。
如下图所示:
3)
TransactionsPer Second图表
每秒事物数曲线图,即:服务器每秒钟处理的事务数量。
如下图所示:
4)
ResponseTime Vs Request图表
响应时间点与每秒请求数关系曲线,即:每秒发送多少个请求时,所对应的平均响应时间。
如下图所示:
5)
LatencyVs Request图表
延迟时间点与每秒请求数关系曲线,即:每秒发送多少个请求时,所对应的平均延时。
如下图所示:
Response Times for Charts页面:
1)
Response Time Percentiles图表
响应时间与百分位数对应关系的曲线图,即:有百分之多少的线程花费了某一响应时间。
如下图所示:
2)
Response Time Overview图表
响应时间概述柱状图,即:响应时间分布。
如下图所示:
3)
Time Vs Threads图表
活动线程与平均响应时间变化曲线图,即:多个活动线程情况下的平均响应时间。
X轴表示的是活动线程数,也就是并发访问的用户数,Y轴表示的是响应时间,F(X,Y)表示在某种并发量的情况下,系统的响应时间是多少。
如下图所示:
4)
Response Time Distribution图表
响应时间分布图,即:在某一响应时间段内的线程响应数量。
如下图所示:
4、测试结果文件的相关配置
使用JMeter进行测试的时候,我们可以收集每个请求中的信息,并保存到结果文件中,如:
.jtl文件或
.cvs文件中。
如下图所示:
我们可以看到第一行的字段,都是我们选择记录请求中的哪些数据到结果文件中。
如果我们使用GUI模式运行JMeter,设置要存储的数据,需要在监听器组件界面中,点击
Configure按钮进行配置。
如下图所示:
但在非GUI模式下运行测试用例,需要在
jmeter.properties配置文件中,根据自己需求进行修改。
主要修改
jmeter.properties配置文件中的
Results file configuration部分内容。
#--------------------------------------------------------------------------- # Results file configuration #--------------------------------------------------------------------------- # This section helps determine how result data will be saved. # The commented out values are the defaults. # legitimate values: xml, csv, db. Only xml and csv are currently supported. #jmeter.save.saveservice.output_format=csv # The below properties are true when field should be saved; false otherwise # # assertion_results_failure_message only affects CSV output #jmeter.save.saveservice.assertion_results_failure_message=true # # legitimate values: none, first, all #jmeter.save.saveservice.assertion_results=none # # jmeter.save.saveservice.data_type=true # jmeter.save.saveservice.label=true # jmeter.save.saveservice.response_code=true # response_data is not currently supported for CSV output # jmeter.save.saveservice.response_data=false # Save ResponseData for failed samples # jmeter.save.saveservice.response_data.on_error=false # jmeter.save.saveservice.response_message=true # jmeter.save.saveservice.successful=true # jmeter.save.saveservice.thread_name=true # jmeter.save.saveservice.time=true # jmeter.save.saveservice.subresults=true # jmeter.save.saveservice.assertions=true # jmeter.save.saveservice.latency=true # Only available with HttpClient4 # jmeter.save.saveservice.connect_time=true # jmeter.save.saveservice.samplerData=false # jmeter.save.saveservice.responseHeaders=false # jmeter.save.saveservice.requestHeaders=false #jmeter.save.saveservice.encoding=false # jmeter.save.saveservice.bytes=true # Only available with HttpClient4 # jmeter.save.saveservice.sent_bytes=true # jmeter.save.saveservice.url=true #jmeter.save.saveservice.filename=false #jmeter.save.saveservice.hostname=false # jmeter.save.saveservice.thread_counts=true #jmeter.save.saveservice.sample_count=false # jmeter.save.saveservice.idle_time=true # Timestamp format - this only affects CSV output files # legitimate values: none, ms, or a format suitable for SimpleDateFormat #jmeter.save.saveservice.timestamp_format=ms #jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS # For use with Comma-separated value (CSV) files or other formats # where the fields' values are separated by specified delimiters. # Default: #jmeter.save.saveservice.default_delimiter=, # For TAB, one can use: #jmeter.save.saveservice.default_delimiter=\t # Only applies to CSV format files: # Print field names as first line in CSV #jmeter.save.saveservice.print_field_names=true # Optional list of JMeter variable names whose values are to be saved in the result data files. # Use commas to separate the names. For example: #sample_variables=SESSION_ID,REFERENCE # N.B. The current implementation saves the values in XML as attributes, # so the names must be valid XML names. # By default JMeter sends the variable to all servers # to ensure that the correct data is available at the client. # Optional XML processing instruction for line 2 of the file: # Example: #jmeter.save.saveservice.xml_pi=<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report.xsl"?> # Default value: #jmeter.save.saveservice.xml_pi= # Prefix used to identify filenames that are relative to the current base #jmeter.save.saveservice.base_prefix=~/ # AutoFlush on each line written in XML or CSV output # Setting this to true will result in less test results data loss in case of Crash # but with impact on performances, particularly for intensive tests (low or no pauses) # Since JMeter 2.10, this is false by default #jmeter.save.saveservice.autoflush=false
提示:
- 将上面的注释打开,并且将值修改成
true,就会打开该条记录,JMeter就会将该条信息输出到我们指定的.jtl文件中。- 如果希望在Errors报告中展示更详细数据,需要确保如下配置:
jmeter.save.saveservice.assertion_results failure message = true- 如果使用了事务控制器(
Transaction Controller),确认Generate parent sample为未勾选状态。- 这些配置需要慎重打开,因为压测过程中,会产生大量的这样的记录,真正压测时,最好不要开太多的日志记录,只需要打开我们关注的数据信息即可。
- 另外,
#jmeter.save.saveservice.output_format=csv选项,如果更改为xml,保存的数据量会很大,也是会影响IO,从而影响测试的结果值。
参考:
- jmeter+ant+jenkins+mac 报告优化(三) 使用命令行执行jmeter方式生成多维度的图形化HTML报告
- JMeter学习-025-JMeter 命令行(非GUI)模式详解(三)-测试图形化 HTML 报表(dashboard)生成
- jmeter压力测试,并使用命令生成详细的html报告
- jmeter-从命令行生成html测试报告
- 关于jmeter性能测试基础步骤和生成HTML测试报告
- 记录问题1:selenium python:使用HTMLTestRunner生成测试报告时程序没错,但是目录下没有生成报告文件
- Pycharm使用python3无法通过HTMLTestRunner生成测试报告踩坑记
- 使用Jmeter对腾讯云3000+非GUI分布压测生成HTML可视化压测报告解读
- 使用HTMLTestRunner生成HTML测试报告,无法生成,解决办法
- appium+python学习笔记之使用HTMLTestRunner.py生成测试报告
- JMeter非GUI模式自动生成测试报告
- Ant Jmeter Jenkins生成html测试报告
- jmeter非GUI模式压测并生成测试报告
- selenium使用HTMLTestRunner自动生成测试报告
- Appium python自动化测试系列之使用HTMLTestRunner生成测试报告(十三)
- 脚本可执行,但无HTML测试报告文件生成,其造成的原因是在PyCharm的执行模式错误
- 『动善时』JMeter基础 — 55、使用非GUI模式运行JMeter(命令行模式)
- Jmeter生成HTML测试报告
- 使用HTMLTestRunner生成测试报告
- python使用 HTMLTestRunner.py生成测试报告