JMeter:生成漂亮的多维度的HTML报告
我们做性能测试的时候会经常使用一些性能测试工具,我个人比较喜欢Jmeter这个工具,但是JMeter这个工具在生成测试报告方面一直有所欠缺。但是JMeter在3.0以后解决了这个问题。

JMeter3.0以后引入了Dashboard Report,用于生成HTML页面格式图形化报告的扩展模块,但是请大家注意一个问题JMeter3.0直接生成报告会出现中文乱码,建议大家使用3.1之后的版本,我这里使用的是3.2。

那么是如何生成HTML报告的呢,我们一起来看一下。

一、如果没有.jtl文件,运行如下命令:
jmeter -n -t source.jmx -l result.jtl -e -o /tmp/ResultReport
我们来看一下这条命令的参数:
-n :以非GUI形式运行Jmeter
-t :source.jmx 脚本路径
-l :result.jtl 运行结果保存路径(.jtl),此文件必须不存在
-e :在脚本运行结束后生成html报告
-o :用于存放html报告的目录
在这之前呢大家需要自己准备好JMeter的脚本,如下是我执行命令截图:

二、如果已经存在结果文件(.jtl),可运行如下命令生成报告
jmeter -g result.jtl -o /tmp/ResultReport
参数:
-g : result.jtl 已经存在的.jtl文件的路径。
-o :用于存放html报告的目录
这种没有日志打印,下面是截图:

无论采用哪种方式,执行完后会在执行的目录生成如下文件或文件夹:

双击打开index.html文件,就可以看到报告了。如图:

这个报告总体分为两部分:Dashboard和Charts。
先看一下Dashboard中都有什么?

Test and Report informations:测试和报告信息: 测试结果保存文件/测试开始时间/测试结束时间/展示过滤器。

APDEX(Application Performance Index):应用程序性能满意度的标准,范围在 0-1之间,1表示达到所有用户均满意,可以在配置文件设置。

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

Statistics: 数据分析,基本将 Summary Report 和 Aggrerate Report 的结果合并。

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

Top 5 Errors by sampler:Top5错误信息采样

接下来看一下Charts里的内容:

Charts里如图所示分为三大块:时间维度信息(Over Time)、吞吐量(Thorughput)、响应时间(Response Times)

Over Time
● Response Times Over Time脚本运行时间内响应时间分布曲线

● Response Time Percentiles Over Time (successful responses) 脚本运行时间内成功响应的请求,响应时间百分位

● Active Threads Over Time 脚本运行时间内的活动线程分布

● Bytes Throughput Over Time脚本运行时间内的吞吐量,单位是byte

● Latencies Over Time脚本运行时间内毫秒级的响应延时

● Connect Time Over Time脚本运行时间内平均连接时间

Throughput

● Hits Per Second (excluding embedded resources) 每秒点击数曲线

● Codes Per Second (excluding embedded resources)每秒状态码分布曲线

● Transactions Per Second 每秒事物数曲线

● Response Time Vs Request 响应时间中值与每秒请求数关系曲线

● Latency Vs Request 延迟时间中值与每秒请求数关系曲线

Response Times

● Response Time Percentiles毫秒级百分位响应时间曲线

● Response Time Overview 响应时间概述柱状图

● Time Vs Threads 活动线程与平均响应时间变化曲线

● Response Time Distribution响应时间分布图

四.自定义配置

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
aggregate_rpt_pct2 : Defaults to
aggregate_rpt_pct3 : Defaults to

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

JMeter:生成漂亮的多维度的HTML报告的更多相关文章

  1. JMeter:生成漂亮的接口/压力测试的HTML报告

    JMeter生成HTML网页报告(非gui模式操作) 我们做性能测试的时候会经常使用一些性能测试工具,比如loardrunner和jmeter,我个人比较喜欢Jmeter这个工具,jmeter之前版本 ...

  2. JMETER 生成测试报告

    JMETER测试报告样例 JMETER 提供的生成测试报告功能,能够生成漂亮的HTML测试报告. 上图是测试统计图 20个用户并发,测试时长一分钟,发起流程320次,没有出错,TPS为6.5,平均发起 ...

  3. C#自动生成漂亮的水晶效果头像

    C#自动生成漂亮的水晶效果头像 与其他的微博系统相同,在“多可内网微博系统”的用户也可上传自己的头像,并支持头像裁剪. 但“多可内网微博系统”的头像可以更漂亮,因为系统实现了水晶效果的头像.C#程序实 ...

  4. jmeter生成报告指示板

    JMeter支持仪表板图表和报告生成 数据从一个测试计划. 这一章描述了如何配置和使用生成器. 概述 JMeter的仪表板生成器是一个模块化的扩展. 它的缺省行为是读取和处理样本 CSV文件生成HTM ...

  5. jmeter生成html格式接口自动化测试报告

    jmeter生成html格式接口自动化测试报告 jmeter自带执行结果查看的插件,但是需要在jmeter工具中才能查看,如果要向领导提交测试结果,不够方便直观. 笔者刚做了这方面的尝试,总结出来分享 ...

  6. 【Python】使用Pytest集成Allure生成漂亮的图形测试报告

    前言 大概两个月前写过一篇<[测试设计]使用jenkins 插件Allure生成漂亮的自动化测试报告>的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jen ...

  7. .NET生成漂亮桌面背景

    .NET生成漂亮桌面背景 一天,我朋友指着某某付费软件对我说,这个东西不错,每天生成一张桌面背景,还能学英语(放置名人名言和翻译)!我说,这东西搞不好我也能做,然后朋友说,"如果你搞出来了, ...

  8. c#每天生成漂亮桌面背景、英文名言、翻译

    阅读目录 一.1. 下载bing.com壁纸查询API 二.2. 解析返回的壁纸JSON信息 三.3. 下载完成的壁纸图片 阅读目录 .NET生成漂亮桌面背景 .NET生成漂亮桌面背景 总结 回到目录 ...

  9. 如何使用Swagger-UI在线生成漂亮的接口文档

    一.简单介绍 Swagger是一个实现了OpenAPI(OpenAPI Specification)规范的工具集.OpenAPI是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API ...

随机推荐

  1. python-day8-元组的内置方法

    #为何要有元组,存放多个值,元组不可变,更多的是用来做查询# t=(1,[1,3],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2)))# print(type(t ...

  2. JDBC连接SQLSERVER

    package xhs;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; im ...

  3. JavaScript学习总结(三)——逻辑And运算符详解

    在JavaScript中,逻辑 AND 运算符用双和号(&&)表示 1 var bTrue = true; 2 var bFalse = false; 3 var bResult = ...

  4. notepad++设置右键

    Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\Shell\NotePad++][HKEY_CLASSES_ROOT\*\Shell\ ...

  5. 如何解决Css属性text-overflow:ellipsis 不起作用(文本溢出显示省略号)

    如何使text-overflow:elipsis起作用? 想要使用css属性text-overflow:elipsis起到作用,样式必须跟overflow:hidden; white-space:no ...

  6. 使用MyEclipse将HTML5移动项目迁移到PhoneGap(一)

    MyEclipse开年钜惠 在线购买低至75折!立即开抢>> [MyEclipse最新版下载] 一.创建一个新的PhoneGap应用程序项目 PhoneGap应用程序项目的结构与HTML5 ...

  7. Windows XP系统服役13年今正式退休

    清明已过,服役13年的微软Windows XP系统也于今日正式“退休”.尽管这之后XP系统仍可以继续使用,但微软不再提供官方服务支持.对于中国数以亿计的XP用户来说,一方面是对已经使用了13年的操作系 ...

  8. slf4j简单使用

    一 slf4j+log4j 1.添加依赖 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --> <d ...

  9. webpack 添加 jquery 插件

    webpack.base.config.js 加入以下配置: , plugins: [ new webpack.ProvidePlugin({ jQuery: 'jquery', $: 'jquery ...

  10. 配置动态加载模块和js分模块打包,生产环境和开发环境公共常量配置

    1. 话不多少 先上代码:  route.js  // 引用模板 分模块编译 const main = r => require.ensure([], () => r(require('. ...