文档章节

将JMeter生成的性能报告jtl文件转换成图片并发送邮件

还是要坚强
 还是要坚强
发布于 2018/04/13 16:49
字数 2381
阅读 154
收藏 0

一. 总体来说有两种方式:

  • 插件转换模式

插件转换模式不仅可以将 JMeter报告-jtl 文件转换成png,还能转换成csv。

其中会用到1个批处理文件和4个jar文件,而且全部包含在 Command-Line Graph Plooting Tool中:

1. PluginsManagerCMD.bat (for windows) 或者 PluginsManagerCMD.sh (for linux), 选择其中一个放到 jmeter\bin 路径下。 (也可能你下载的文件名称叫做 JMeterPluginsCMD.bat 和 JMeterPluginsCMD.sh )

2. cmdrunner.jar (我下载的是cmdrunner-2.0.jar),需要放到 jmeter\lib 路径下。

3. jmeter-plugins-cmn-jmeter-0.4.jar。然后放到 jmeter\lib 路径下。

4. jmeter-plugins-cmd-2.1.jar . 然后放到 jmeter\lib\ext 路径下。

5. jmeter-plugins-manager-0.20.jar 。然后放到 jmeter\lib\ext 路径下。

  • 命令行转换模式

仅适合Apache jmeter 3.0以上版本哦。

 

二. 插件转换模式:

1. 下载Command-Line Graph Plooting Tool :

https://jmeter-plugins.org/ 

下载某个版本的jar包就可以了. 这个Zip包里面包含6个文件:1个bat文件,1个sh文件,4个jar文件。

如果想看这个jar包的使用方法,就点击蓝色的链接“Command-Line Graph Plotting Tool”, 跳转界面有详细的jar包使用说明哦(https://jmeter-plugins.org/wiki/JMeterPluginsCMD/)。里面这个支持转换成png的图片类型很重要哦:

Plugin Type Classes

Make note that you need to install corresponding plugins set to have Extras plugins available in CMD.

Most of class names are self-explanatory:

  • AggregateReport = JMeter's native Aggregate Report, can be saved only as CSV
  • SynthesisReport = mix between JMeter's native Summary Report and Aggregate Report, can be saved only as CSV
  • ThreadsStateOverTime = Active Threads Over Time
  • BytesThroughputOverTime
  • HitsPerSecond
  • LatenciesOverTime
  • PerfMon = PerfMon Metrics Collector
  • DbMon = DbMon Metrics Collector, DataBase, get performance counters via sql
  • JMXMon = JMXMon Metrics Collector, Java Management Extensions counters
  • ResponseCodesPerSecond
  • ResponseTimesDistribution
  • ResponseTimesOverTime
  • ResponseTimesPercentiles
  • ThroughputVsThreads
  • TimesVsThreads = Response Times VS Threads
  • TransactionsPerSecond
  • PageDataExtractorOverTime
  • MergeResults = MergeResults Command Line Merge Tool to simplify the comparison of two or more load tests, need properties file (like merge-results.properties)

Plugin type在转换格式的时候是这么被调用的:

Usage and Parameters

Generating PNG:

JMeterPluginsCMD.bat --generate-png test.png --input-jtl results.jtl --plugin-type ResponseTimesOverTime
 --width 800 --height 600

Generating CSV:

JMeterPluginsCMD.bat --generate-csv test.csv --input-jtl results.jtl --plugin-type ResponseTimesOverTime

命令中传递的plugin-type一定是上述列表中的某一个,其他就可能转换不了了哦。

 

2. 将下载的jar包放到JMeter安装目录下的文件里面:

PluginsManagerCMD.bat 和 PluginsManagerCMD.sh 放到 bin 目录下面:

cmdrunner.jar 和 jmeter-plugins-cmn-jmeter-0.4.jar 放到 lib目录下面:

jmeter-plugins-cmd-2.1.jar 和 jmeter-plugins-manager-0.20.jar 放到 lib\ext目录下面:

 

3. 在命令行调用cmdrunner.jar 或者 JMeterPluginsCMD.bat:

  • 调用cmdrunner.jar      当然了,官网文档调用的是PluginsManager.bat,我为什么要直接调用这个cmdrunner.jar文件呢?请移步到第4部分解释。

java -jar D:\apache-jmeter-3.3\lib\cmdrunner-2.0.jar --tool Reporter --input-jtl %WORKSPACE%\result-output\%TestAPI%.jtl --plugin-type ResponseTimesOverTime --generate-png ResponseTimesOverTime.png

  • 调用JMeterPluginsCMD.bat :

Generating PNG:

JMeterPluginsCMD.bat --generate-png test.png --input-jtl results.jtl --plugin-type ResponseTimesOverTime --width 800 --height 600

Generating CSV:

JMeterPluginsCMD.bat --generate-csv test.csv --input-jtl results.jtl --plugin-type ResponseTimesOverTime

-jar 后面跟的是这个cmdrunner.jar在的实际目录,根据情况看是否加上路径

--tool 我们就选择Reporter就好了

--input-jtl 后面跟的是我们需要转换的jtl文件实际目录

--plugin-type 跟的是我们将要转换的视图,这里我用Response Times Over Time组件做例子:

也就是说这里能够将组件转换成图片的话,这个组件的名字一定是cmdrunner支持的组件类型哦:

 

4. 官方文档中支持类型:

具体支持什么组件类型,可以查看官方文档: Plugins Manager from Command-Line:

http://www.jmeter-plugins.org/wiki/PluginsManagerAutomated/

https://jmeter-plugins.org/wiki/JMeterPluginsCMD/

https://jmeter-plugins.org/wiki/GraphsGeneratorListener/

这里面讲的是如何调用 JMeterPluginsCMD.bat, 但是我实际用的时候碰到了很多问题。

 

5. 我为什么不直接调用JMeterPluginsCMD.bat:

这是我本地的bat文件 ,名字是“PluginsManagerCMD”。(bat文件放到bin目录,cmdrunner.jar放到 lib 目录):

  • bat 文件是在window机器上执行的:

@echo off

java %JVM_ARGS% -jar %~dp0\..\lib\cmdrunner-2.0.jar --tool org.jmeterplugins.repository.PluginManagerCMD %*

  • 这个bat文件我在调用的时候发现根本就找不到cmdrunner.jar包,生成的路径是错的。

  • 试过很多回,即使将路径转换成相对路径也仍然有问题:

@echo off

java %JVM_ARGS% -jar cd ..\lib %~dp0 cmdrunner-2.0.jar --tool org.jmeterplugins.repository.PluginManagerCMD %*

转换成相对路径以后可以找到cmdrunner.jar包了,但是报错:

 

  • sh 文件时在Linux机器上执行的。

 

6. 生成的图片文件在哪里?

因为我是在Jenkins Job中添加的Window Command:

生成的png前面没有加上绝对路径,也就是说这里默认是在workspace路径下生成图片。

如果你是在JMeter的cmdrunner.jar所在路径执行命令,就不要加上jar包的绝对路径了,这个时候就会在这个jar包的同目录下生成图片。

 

7.邮件中引用生成的图片:

在Editable Email Content中这么引用:

 

三. 命令行转换方式:

命令行模式将不需要上述那么麻烦,需要4个jar包和一个批处理文件,这里直接在jmeter运行某个jmx文件的时候,直接将jtl转成测试图表   -      注意此方法只使用jmeter3.0以后版本。

1. 在测试过程中将jtl转成测试报告(在jmeter的bin目录下执行)

./jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport

参数说明:

    -n : 非GUI 模式执行JMeter

    -t : 执行测试文件所在的位置及文件名

    -r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r

    -l : 指定生成测试结果的保存文件, jtl 文件格式

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

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

    -o 指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport文件夹必须不存在否则报错

 

如上命令执行,可以看到控制台开始打印数据了

运行完成后,可以在指定的目录下看到生成结果文件夹/home/tester/apache-jmeter-3.0/resultReport

我们可以将该文件夹下载到本地windows机器,然后用浏览器打开index.html文件就能看到报告内容了

首页Dashboard:

解释:

file:文件名

start time:开始时间

end time:结束时间

filter for display:过滤器

APDEX(Application performance Index):应用程序性能指标,计算每笔交易APDEX的容忍和满足阈值基于可配置的值,范围在 0-1 之间,1表示达到所有用户均满意

T(Toleration threshold):容忍或满意阈值

F(Frustration threshold):失败阈值

requests summary中KO指失败率,OK指成功率

 

首页Dashboard:页面滚动条往下拉:

解释:

statistics:数据分析, 基本将 Summary Report 和 Aggrerate Report 的结果合并,含义分别为:

请求名称、请求数目、失败请求数目、错误率(本次测试中出现错误的请求的数量/请求的总数)、90%用户响应时间、95%用户响应时间、99%用户响应时间、吞吐量(吞吐量——默认情况下表示每秒完成的请求数Request per Second,当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数)、Kb/sec(每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec)、最小响应时间、最大响应时间

 

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

 

Chart-Over Time-Response Times Over Time:随着时间推移响应时间变化趋势图

可以看到历时3分钟,响应时间由0.334ms慢慢下滑到0.225ms

 

Chart-Over Time-Bytes Throughput Over Time:随着时间推移每秒接收和请求字节数变化趋势图,蓝色为每秒发送字节数,黄色为每秒接收字节数:

 

Chart-Over Time-Latencies Over Time:随着时间推移平均响应延时趋势图,记录客户端发送请求完成后,服务器端返回请求之前这段时间

由于我测试用的并发请求百度,请求都被拒绝了,并没有收到从服务端返回的请求,所以这里看到一条0的线

 

以上就是over time栏的所有图表,除了over time还有throuput和response times栏

throuput栏:

Throughput栏包括:

hits per second:每秒点击率

codes per second:每秒状态码数量

Transactions per second:每秒事务量

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

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

 

Response Times栏:

 

response times栏包括:

Response Time Percentiles: 响应时间百分比

Active Threads Over Time: 随着时间推移活跃线程数

Time Vs Threads: 测试过程中的线程数时续图

Response Time Distribution: 响应时间分布

 

2. 使用之前的测试结果,生成测试报告

./jmeter -g baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport

-g : 指定已存在的测试结果文件

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

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

-o 指定的文件及文件夹,必须 不存在 ,否则执行会失败

 使用命令行转换的第一种和第二种方式其实最终都依赖生成的jtl文件,将jtl文件生成测试报告。双击测试报告中的index.html文件即可查看报告内容

 

谢谢阅读哦~~

© 著作权归作者所有

还是要坚强
粉丝 5
博文 67
码字总数 45675
作品 0
深圳
程序员
私信 提问
JMETER接口自动化部署JENKINS教程

  首先,保证本地安装并部署了jenkins,jmeter,xslproc      我搭建的自动化测试框架是jmeter+jenkins+xslproc      ---注意:原理是,jmeter自生成的报告jtl文件,通过xslproc工...

SEOwhywhy
03/04
20
0
菜鸟的性能测试之路(四)——Jmeter生成性能报告

接上次我利用了Jmeter做完压测之后,现在我就要把它自动生成一个HTML的性能报告了。 由于性能测试测的是性能,所以此处建议使用命令行,而不是图形界面。用命令行界面的优势有如下几点: 1....

六月雨June
2018/07/12
0
0
linux环境下使用jmeter做性能测试

只需一行命令:sh jmeter.sh -n -t http.jmx -l result_*.jtl 步骤: 一 安装jmeter 1 把你笔记本的jmeter添加到压缩包 jmeter.zip 2 上传jmeter.zip到linux服务器:我用rz方式上传到了/opt/...

孟飞阳
2018/05/24
397
0
jmeter+ant+jenkins

1,下载jenkins 2,修改jenkins.xml配置文件的端口,防止端口冲突(默认8080) 3,重启Jenkins服务器 4,下载ant 5,配置ant环境变量 6,录制jmeter脚本(脚本的录制可以使用badboy) 7,复制...

gool_hard
2018/06/26
0
0
JMeter:生成漂亮的多维度的HTML报告

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

孟飞阳
2018/06/27
212
0

没有更多内容

加载失败,请刷新页面

加载更多

反编译9.png图片还原

本文链接:https://blog.csdn.net/a1140778530/article/details/10528507 经常反编译apk文件找资源,9.png的文件处理起来很麻烦。 最近使用Ant自动编译打包app时,从别处搜罗来的9.png文件导...

shzwork
28分钟前
6
0
Shell脚本应用 – for、while循环语句

一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种...

linux-tao
28分钟前
5
0
RPA风潮下企业财务工作模式的变革

RPA(机器人流程自动化)在财务领域的应用,正给企业财务带来前所未有的改变。 前RPA时代,财务领域面临的痛点 在RPA机器人应用之前,企业财务工作进程的推进,主要通过财务人员人工操作或信...

UiBot
33分钟前
5
0
Hive之命令行修改表注释

最近遇到一个需求,在不重建表的情况下,修改表的注释,hive有没有类似关系型数据库的SQL命令来修改呢,找了下,亲测有效,如下List-1 List-1 hive>use your_schemahvie>ALTER TABLE tabl...

克虏伯
33分钟前
5
0
是什么,它的作用是什么

在HTML文档的首部往往会有这么一句话<!DOCTYPE html>,许多时候我们忽视了它的存在,它实际上是一个声明,告诉浏览器用哪种HTML版本的规范来解读HTML文档。 尽管我们不给出这句声明浏览器照样...

前端老手
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部