美文网首页我爱编程
如何将JMeter生成的性能报告jtl文件转换成图片并发送邮件

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

作者: Vicky_习惯做唯一 | 来源:发表于2018-04-13 16:50 被阅读0次

摘要: 将JMeter job构建到Jenkins上以后,生成的是jtl文件,没法向打开JMeter查看Response结果树一样直观查看最终测试结果,那我们可否将这些文件转换成png图片格式,并且放到邮件中呢?

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

插件转换模式

插件转换模式不仅可以将 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 =PerfMonMetrics Collector

DbMon =DbMonMetrics Collector, DataBase, get performance counters via sql

JMXMon =JMXMonMetrics Collector, Java Management Extensions counters

ResponseCodesPerSecond

ResponseTimesDistribution

ResponseTimesOverTime

ResponseTimesPercentiles

ThroughputVsThreads

TimesVsThreads = Response Times VS Threads

TransactionsPerSecond

PageDataExtractorOverTime

MergeResults =MergeResultsCommand 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/

Active Threads Over Time

Response Times Over Time

Transactions per Second

Server Hits per Seconds

Response Codes per Second

Response Latencies Over Time

Bytes Throughput Over Time

Response Times vs Threads

Transaction Throughput vs Threads

Response Times Distribution

Response Times Percentiles

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

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

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

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

@echooff

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

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

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

@echooff

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文件即可查看报告内容

谢谢阅读哦~~

相关文章

网友评论

    本文标题:如何将JMeter生成的性能报告jtl文件转换成图片并发送邮件

    本文链接:https://www.haomeiwen.com/subject/fefhkftx.html