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

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

谢谢阅读哦~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    燕京博士阅读 4,161评论 0 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,600评论 18 139
  • 互联网压力性能Badboy.Jmeterhttp://itopic.org/jmeter-http-tcp.htm...
    燕京博士阅读 2,884评论 0 20
  • 我的另一半世界 从这里开启
    南宫影琪阅读 203评论 0 0
  • 最近看了一篇文章,大意是讲的如今贫富差距悬殊,当穷人在花时间省钱的时候,富人用钱来买大把大把的时间。 看完我心里想...
    金木小残阅读 198评论 1 0