jmeter学习指南之生成html性能结果报告(篇幅较长谨慎阅读)

点击链接加入QQ群229390571(免费公开课、视频应有尽有):https://jq.qq.com/?_wv=1027&k=5rbudQa

一、前言

印象中,jmeter在图表展示方面是比较弱的,需要依赖各种插件才能展示需要的图表,而且界面还很土!

终于,在jmeter3.0版本推出了一个很重要的新功能,就是能够自动生成html性能图表,功能相当强大!

我们先来看一眼主界面:

这里只放两张图,其它还有各种性能指标的图表,就不一一展示了。


二.功能简介

JMeter3.0提供一个用于生成HTML页面格式图形化报告的扩展模块。该模块支持通过两种方式生成多维度图形化测试报告:

在JMeter性能测试结束时,自动生成本次测试的HTML图形化报告

使用一个已有的结果文件(如jtl、csv文件)来生成该次结果的HTML图形化报告

其默认提供的度量维度包括:

APDEX(Application Performance Index)指数

聚合报告:类似于UI上的  「Aggregate Report」

Errors报告:展示不同错误类型的数量以及百分比

响应时间变化曲线: 展示平均响应时间随时间变化情况,类似于JMeter Plugins在UI上的*jp@gc - Response Times Over Time*

数据吞吐量时间曲线:展示每秒数据吞吐量随时间变化的情况,类似于JMeter Plugins在UI上的*jp@gc - Bytes Throughput Over Time*

Latency time变化曲线:展示Latency time随时间变化的情况,类似于JMeter Plugins在UI上的*jp@gc - Response Latencies Over Time*

每秒点击数曲线:类似于JMeter Plugins在UI上的*jp@gc - Hits per Second*

HTTP状态码时间分布曲线:展示响应状态码随时间的分布情况,类似于JMeter Plugins在UI上的*jp@gc - Response Codes per Second*

事务吞吐量时间曲线(TPS):展示每秒处理的事务数随时间变化情况,类似于JMeter Plugins在UI上的*jp@gc - Transactions per Second*

平均响应时间与每秒请求数的关系图:展示平均响应时间与每秒请求数(可以理解为QPS)的关系

Latency time与每秒请求数的关系图:展示Latency time与每秒请求数的关系

响应时间百分位图:响应时间的百分位分布图

活动线程数变化曲线:展示测试过程中活动线程数随时间变化情况

平均响应时间与线程数的关系图:展示平均响应时间与线程数的关系,类似于JMeter Plugins在UI上的*jp@gc - Response Times vs Threads*

柱状响应时间分布图:展示落在各个平均响应时间区间的请求数情况

注1:Latency time没有翻译成中文,这里对其计算方式做注解:

- Latency time = 接收到响应的第一个字节的时间点 - 请求开始发送的时间点

- 响应时间(JMeter术语中的Elapsed time) = 接收完所有响应内容的时间点 - 请求开始发送的时间点

注2:Apdex 标准从用户的角度出发,将对应用响应时间的表现,转为用户对于应用性能的可量化为范围为 0-1 的满意度评价。。

Apdex

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

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

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


三.快速入门

1.确认基本配置

在jmeter.properties或者user.properties确认如下配置项:

jmeter.save.saveservice.bytes = true

jmeter.save.saveservice.label = true

jmeter.save.saveservice.latency = true

jmeter.save.saveservice.response_code = true

jmeter.save.saveservice.response_message = true

jmeter.save.saveservice.successful = true

jmeter.save.saveservice.thread_counts = true

jmeter.save.saveservice.thread_name = true

jmeter.save.saveservice.time = true

# the timestamp format must include the time and should include the date.

# For example the default, which is milliseconds since the epoch: 

jmeter.save.saveservice.timestamp_format = ms

# Or the following would also be suitable

jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss

如果希望在Errors报告中展示更详细数据,需要确保如下配置

jmeter.save.saveservice.assertion_results_failure_message = true

如果使用了事务控制器(Transaction Controller),确认Generate parent sample为未勾选状态

2.生成报告

a. 在压力测试结束时同时自动生成报告

基本命令格式:

jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>

样例:

jmeter -n -t F:PerformanceTestTestCasescriptgetToken.jmx -l testLogFile -e -o ./output

参数:

-n :以非GUI形式运行Jmeter

-t :source.jmx 脚本路径

-l :运行结果保存路径(.jtl或.csv) ---这里后缀可以是jtl或csv,但文件内容格式必须要是csv格式

-e :在脚本运行结束后生成html报告

-o :保存html报告的路径, 此文件夹必须为空或者不存在

b. 使用已有的压力测试结果日志文件生成报告

基本命令格式:

jmeter -g <log file> -o <Path to output folder>

样例:

jmeter -g D:apache-jmeter-3.0bintestLogFile -o ./output

参数:

-g :specifies the existing result file   指定已存在的结果文件

以上两个样例都会在apache-jmeter-3.0binoutput目录下产生如下文件(夹):

用浏览器打开index.html文件,即可查看各种图形化报告。

注:在3.0版本,由于源码中字符编码的问题,可能会遇到生成的报告中,中文标签展示为乱码的问题,需要修改源码中的读取报告的编码格式。在3.1版本中,该问题已修复,所以建议选择高版本的jmeter。


四.自定义配置

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

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 90

aggregate_rpt_pct2 : Defaults to 95

aggregate_rpt_pct3 : Defaults to 99

可以在user.properties中对其进行覆盖,如:aggregate_rpt_pct1 = 70,效果如下:

2.图表配置

每个图表配置都是以jmeter.reportgenerator.graph.<图表名称>.为前缀。

classname 图表的实现类,如果有自己定制的实现,将该配置的值写为自定义实现类的类名

property.set_granularity 设置图标的采样点粒度,不配置时默认使用总体配置中的粒度设置

3.输出配置

输出配置都以jmeter.reportgenerator.exporter为前缀。

property.output_dir 配置默认的报告输出路径。在命令行可以用-o选项来设置特定的路径覆盖该配置。

html.series_filter 用于过滤展示内容。如在user.properties添加如下配置:

jmeter.reportgenerator.exporter.html.series_filter=(^Login)(-success|-failure)?


这样配置之后,最后的报告只展示名为Login这个取样器的数据。该配置包含两部分,(-success|-failure)?是Transactions per second图表所依赖的配置。前面部分接受一个正则表达式用来过滤。

4.报告定制

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文件中修改,效果如下图

页面的其他各元素也可以用相同的方法进行定制

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容