1.简介

  相对于Loadrunner,Jmeter其实也是可以有测试报告产出的,虽然一般都不用(没有Loadrunner的报告那么强大是一方面),但是有小伙伴们私下问,那宏哥还是顺手写一下吧,今天我们就来学习下,如何输入HTML格式的JMeter测试报告。前面已经介绍, 如果要做性能测试,需要在GUI上设计好你的Test Plan,设置各种场景和负载值,包括多少个线程,多少个用户,循环多少次。设置好了保存,然后用命令行去启动性能测试,查看相关测试结果。

2.Jmeter生成HTML格式报告的架构

仪表板生成引擎是基于示例操作流程的模块化功能。
下图可以表示这些过程:

在此视图中,可以看到:

    • 产生样品的来源(例如CSV文件)。
    • 一系列称为消费者的项目,对通过该项目的样本进行操作(例如,筛选,排序,计算等)。
    • 执行上下文,称为样本上下文,在其中存储使用者计算的结果。
    • 一组名为出口器的项目,它们使用示例上下文的内容为用户生成最终结果(例如HTML页面生成)。

3.具体步骤

1. 打开图像(gui)界面,新建一个Thread Group,如下图所示:

2. 新建三个Http Request,分别是百度新闻首页,和百度新闻财经,百度新闻体育,如下图所示:

百度新闻首页

百度新闻财经

百度新闻体育

3. 添加一个Assertion,选择response assertion,如下图所示:

4. 添加一个View Results Tree.如下图所示:

5. Thread Group设置如下图所示:

这里,你在图形界面的时候,最好设置都是1,测试通过后,再改成多个用户,然后保存本地xx.jmx文件

6. 保存到本地,关闭JMeter。

7.本地先在桌面创建一个文件夹HttpReports,用来保存HTML报告。

8. cmd启动性能测试,如下图所示:

9.cmd 先要cd到jmeter的bin目录,然后输入以下命令:

jmeter -n -t D:\software\apache-jmeter-5.1.1\bin\Test Plan And Report.jmx -l C:\Users\DELL\Desktop\HttpReports\html.csv -e -o C:\Users\DELL\Desktop\HttpReports

三个路径依次是:xxx.jmx文件路径,输出xxx.csv文件路径,要保存的http report的文件路径,运行结果如下图所示:

10. 查看HTTP 报告,在桌面的HttpReports文件夹,生成了多个文件,如下图所示:

11.用浏览器打开这个html文件,自己随便点击,看看报告,如下图所示:

4.图表信息详解

Jmeter5.0后测试报告分为三部分,Dashboard、Charts和Customs Graphs,Jmeter5.0以下版本没有第三项的。下面分开讲解。

4.1Dashboard(概览仪表盘)

①、Test and Report informations

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

②、APDEX (应用性能指标)

APDEX(Application Performance Index):应用程序性能满意度的标准,范围在 0-1之间,1表示达到所有用户均满意,可以在配置文件设置。关于APDEX的相关信息,请参考这里:应用性能指标;英文原文,参考这里:Apdex-Wikipedia

③、Requests Summary

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

④、Statistics

统计表在一个表中提供每个事务的所有指标的摘要,包括3个可配置的百分位数。Statistics: 数据分析,基本将 Summary Report 和 Aggrerate Report 的结果合并。

⑤、Errors

错误表提供了所有错误及其在总请求中所占比例的摘要。Errors: 错误情况,依据不同的错误类型,将所有错误结果展示。

⑥、Top 5 Errors by sampler

前5个错误(按Sampler列出)表为每个Sampler(默认情况下不包括Transaction Controller)提供前5个错误:Top 5 Errors by sampler:Top5错误信息采样

4.2Charts(详细信息图表)

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

PS:由于详细信息图表有点多,这里我挑几个性能测试过程中比较关键的图表解析!

Over Time

①、Response Times Over Time(脚本运行期间的响应时间变化趋势图)

说明:可以根据响应时间和变化和TPS以及模拟的并发数变化,判断性能拐点的范围。

②、 Response Time Percentiles Over Time (successful responses)

说明:脚本运行期间成功的请求响应时间百分比分布图,可以理解为聚合报告里面不同%的数据,图形化展示的结果。

③、Active Threads Over Time(脚本运行时间内的活动线程分布)

 

④、Bytes Throughput Over Time(脚本运行期间的吞吐量变化趋势图)

说明:在容量规划、可用性测试和大文件上传下载场景中,吞吐量是很重要的一个监控和分析指标。

⑤、Latencies Over Time(脚本运行期间的响应延时变化趋势图)

说明:在高并发场景或者强业务强数据一致性场景,延时是个很严重的影响因素。

⑥Connect Time Over Time(脚本运行时间内平均连接时间)

Throughput

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

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

③、Transactions Per Second 每秒事物数曲线

说明:每秒事务数,即TPS,是性能测试中很重要的一个指标,它是用来衡量系统处理能力的一个重要指标。

④、Total Transactions Per Second每秒通过事务总数

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

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

Response Times

①、 Response Time Percentiles(响应时间百分比分布曲线图)

说明:即响应时间在某个范围内的请求在所有请求数中所占的比率,相比于平均响应时间,这个值更适合用来衡量系统的稳定性。

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

③、Time Vs Threads(平均响应时间和线程数的对应变化曲线)

说明:可以通过这个对应的变化曲线来作为确定性能拐点的一个参考值。

④、Response Time Distribution响应时间分布图

4.3Customs Graphs

因为宏哥这里没有设置所以是空的,你可以根据自己需求定制自己的,具体的步骤请参考:https://jmeter.apache.org/usermanual/generating-dashboard.html#top

5.小结

1.在输入命令运行的时候,宏哥遇到了找不到测试计划(An error occurred: Unknown arg: Plan),宏哥第一感觉就是测试计划的名字中间有空格(其他可能情况:特殊字符、路径错误、中文等等吧)去掉后就可以运行了。

2.运行过程和制作会遇到4445端口是否允许通过防火墙或者安全性提示的信息,允许通过就可以了。

3.自定义配置

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

①、总体配置
总体配置都是以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,效果如下:

②、图表配置

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

classname 图表的实现类,如果有自己定制的实现,将该配置的值写为自定义实现类的类名
property.set_granularity 设置图标的采样点粒度,不配置时默认使用总体配置中的粒度设置
③、输出配置
输出配置都以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图表所依赖的配置。前面部分接受一个正则表达式用来过滤。
④、报告定制
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. Java从入门到精通——数据库篇Mongo DB 安装启动及配置详解

    一.概述     Mongo DB 下载下来以后我们应该如何去安装启动和配置才能使用Mongo DB,本篇博客就给大家讲述一下Mongo DB的安装启动及配置详解. 二.安装 1.下载Mongo DB ...

  2. Jmeter(三) - 从入门到精通 - 测试计划(Test Plan)的元件(详解教程)

    1.简介 上一篇中宏哥已经教你如何通过JMeter来创建一个测试计划(Test Plan),那么这一篇我们就将JMeter启动起来,创建一个测试计划(Test plan),然后宏哥给大家介绍一下测试计 ...

  3. Jmeter(四十) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 中篇(详解教程)

    1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是模模糊糊的.更有甚者觉得那是禁地神圣不可轻 ...

  4. Jmeter(四十一) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 下篇(详解教程)

    1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是模模糊糊的.更有甚者觉得那是禁地神圣不可轻 ...

  5. Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)

    1.简介 千呼万唤始出来,这一篇感觉写了好久,总想写的清楚明白简洁,但是还是洋洋洒洒写了好多,希望大家喜欢吧!本来打算将这一篇文章是放在性能测试中讲解和分享的,但是有的童鞋或者小伙伴们私下问的太多了, ...

  6. JMeter学习笔记16-如何输出HTML格式的性能测试报告

    文本来学习下,如何输入HTML格式的JMeter测试报告.前面已经介绍, 如果要做性能测试,需要在GUI上设计好你的Test Plan,设置各种场景和负载值,包括多少个线程,多少个用户,循环多少次.设 ...

  7. 《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)

    1.简介 在实际自动化测试过程中,我们同样也避免不了会遇到单选和多选的测试,特别是调查问卷或者是答题系统中会经常碰到.因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助 ...

  8. Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)

    1.简介 前边三十多篇文章主要介绍的是Jmeter的一些操作和基础知识,算是一些初级入门的知识点,从这一篇开始我们就来学习Jmeter比较高级的操作和深入的知识点了.今天这一篇主要是讲参数化,其实前边 ...

  9. Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...

随机推荐

  1. 使用JWT+RSA完成SSO单点登录

    无状态登录原理 1.1.什么是有状态? 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session. 例如登录:用户登 ...

  2. FileZilla使用教程

    FileZilla使用教程和问题汇总 正式开始之前我还是想闲聊几句,毕竟调试解决这些问题,整整耗了我一天半的时间.前不久学校要求上交一个web大作业,然后我们宿舍就寻思光做出来前后端搞头不大,不如整个 ...

  3. Python 爬虫系列

    爬虫简介 网络爬虫 爬虫指在使用程序模拟浏览器向服务端发出网络请求,以便获取服务端返回的内容. 但这些内容可能涉及到一些机密信息,所以爬虫领域目前来讲是属于灰色领域,切勿违法犯罪. 爬虫本身作为一门技 ...

  4. BCC和libbpf的转换

    BCC和libbpf的转换 本文讲述如何将基于BCC的BPF应用转换为libbpf + BPF CO-RE.BPF CO-RE可以参见上一篇博文. 为什么是libbpf和BPF CO-RE? 历史上, ...

  5. 腾讯IOT安卓开发初探

    目录 腾讯IOT 安卓开发初探 Tecent IOT 开发平台的使用 新建项目 创建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 安卓开发 前置配置 data.json ...

  6. NC65在日常开发中常用的代码写法

    标题 NC65开发相关代码 版本 1.0.1 作者 walton 说明 收集NC在日常开发中常用的代码写法,示例展示 1.查询 1.1 通过BaseDAO查询结果集并转换 //通过BaseDAO进行查 ...

  7. ORA-39700: database must be opened with UPGRADE option【转】

    1. 错误 数据库升级后(从11.2.0.1升级到11.2.0.4)启动报错 SQL> startup ORACLE instance started.   Total System Globa ...

  8. Debian9 升级至 Debian10

    前言 目前国内云服务商提供的镜像最新只有 9 , 本文讲解升级至 10 的方法 正文 查看当前版本 lsb_release -a No LSB modules are available. Distr ...

  9. TypeScript接口与类的使用

    一.TypeScript接口 Interfaces 可以约定一个对象的结构 一个对象去实现一个接口 就必须拥有这个接口中所有的成员用interface定义接口, 并且定义接口中成员的类型 编译之后会发 ...

  10. Python找对称数——纪念第一次自主编写代码

    2021-01-17 题目: [问题描述]已知10个四位数输出所有对称数及个数 n,例如1221.2332都是对称数[输入形式]10个四位数,以空格分隔开[输出形式]输入的四位数中的所有对称数,对称数 ...