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

一. 整体来讲有两种方式:

  • 插件转换模式

插件转换模式不只能够将 JMeter报告-jtl 文件转换成png,还能转换成csv。html

其中会用到1个批处理文件和4个jar文件,并且所有包含在 Command-Line Graph Plooting Tool中:java

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

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

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

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

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

 

谢谢阅读哦~~

相关文章
相关标签/搜索