如何將JMeter生成的性能報告jtl文件轉(zhuǎn)換成圖片并發(fā)送郵件

摘要: 將JMeter job構(gòu)建到Jenkins上以后,生成的是jtl文件,沒法向打開JMeter查看Response結(jié)果樹一樣直觀查看最終測試結(jié)果,那我們可否將這些文件轉(zhuǎn)換成png圖片格式,并且放到郵件中呢?

一. 總體來說有兩種方式:

插件轉(zhuǎn)換模式

插件轉(zhuǎn)換模式不僅可以將 JMeter報告-jtl 文件轉(zhuǎn)換成png,還能轉(zhuǎn)換成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 路徑下。

命令行轉(zhuǎn)換模式

僅適合Apache jmeter 3.0以上版本哦。

二. 插件轉(zhuǎn)換模式:

1. 下載Command-Line Graph Plooting Tool :

https://jmeter-plugins.org/?

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

如果想看這個jar包的使用方法,就點擊藍(lán)色的鏈接“Command-Line Graph Plotting Tool”, 跳轉(zhuǎn)界面有詳細(xì)的jar包使用說明哦(https://jmeter-plugins.org/wiki/JMeterPluginsCMD/)。里面這個支持轉(zhuǎn)換成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在轉(zhuǎn)換格式的時候是這么被調(diào)用的:

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一定是上述列表中的某一個,其他就可能轉(zhuǎn)換不了了哦。

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. 在命令行調(diào)用cmdrunner.jar 或者 JMeterPluginsCMD.bat:

調(diào)用cmdrunner.jar ? ? ?當(dāng)然了,官網(wǎng)文檔調(diào)用的是PluginsManager.bat,我為什么要直接調(diào)用這個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

調(diào)用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在的實際目錄,根據(jù)情況看是否加上路徑

--tool 我們就選擇Reporter就好了

--input-jtl 后面跟的是我們需要轉(zhuǎn)換的jtl文件實際目錄

--plugin-type 跟的是我們將要轉(zhuǎn)換的視圖,這里我用Response Times Over Time組件做例子:

也就是說這里能夠?qū)⒔M件轉(zhuǎn)換成圖片的話,這個組件的名字一定是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

這里面講的是如何調(diào)用 JMeterPluginsCMD.bat, 但是我實際用的時候碰到了很多問題。

5. 我為什么不直接調(diào)用JMeterPluginsCMD.bat:

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

bat 文件是在window機器上執(zhí)行的:

@echooff

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

這個bat文件我在調(diào)用的時候發(fā)現(xiàn)根本就找不到cmdrunner.jar包,生成的路徑是錯的。

試過很多回,即使將路徑轉(zhuǎn)換成相對路徑也仍然有問題:

@echooff

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

轉(zhuǎn)換成相對路徑以后可以找到cmdrunner.jar包了,但是報錯:

sh 文件時在Linux機器上執(zhí)行的。

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

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

生成的png前面沒有加上絕對路徑,也就是說這里默認(rèn)是在workspace路徑下生成圖片。

如果你是在JMeter的cmdrunner.jar所在路徑執(zhí)行命令,就不要加上jar包的絕對路徑了,這個時候就會在這個jar包的同目錄下生成圖片。

7.郵件中引用生成的圖片:

在Editable Email Content中這么引用:

三. 命令行轉(zhuǎn)換方式:

命令行模式將不需要上述那么麻煩,需要4個jar包和一個批處理文件,這里直接在jmeter運行某個jmx文件的時候,直接將jtl轉(zhuǎn)成測試圖表 ? - ? ? ?注意此方法只使用jmeter3.0以后版本。

1. 在測試過程中將jtl轉(zhuǎn)成測試報告(在jmeter的bin目錄下執(zhí)行)

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

參數(shù)說明:

??? -n : 非GUI 模式執(zhí)行JMeter

??? -t : 執(zhí)行測試文件所在的位置及文件名

??? -r :?遠(yuǎn)程將所有agent啟動用在分布式測試場景下,不是分布式測試只是單點就不需要-r

??? -l : 指定生成測試結(jié)果的保存文件, jtl 文件格式

??? -e : 測試結(jié)束后,生成測試報告

??? -o : 指定測試報告的存放位置

??? -o?指定的文件及文件夾,必須不存在 ,否則執(zhí)行會失敗,對應(yīng)上面的命令就是resultReport文件夾必須不存在否則報錯

如上命令執(zhí)行,可以看到控制臺開始打印數(shù)據(jù)了

運行完成后,可以在指定的目錄下看到生成結(jié)果文件夾/home/tester/apache-jmeter-3.0/resultReport

我們可以將該文件夾下載到本地windows機器,然后用瀏覽器打開index.html文件就能看到報告內(nèi)容了

首頁Dashboard:

解釋:

file:文件名

start time:開始時間

end time:結(jié)束時間

filter for display:過濾器

APDEX(Application performance Index):應(yīng)用程序性能指標(biāo),計算每筆交易APDEX的容忍和滿足閾值基于可配置的值,范圍在 0-1 之間,1表示達到所有用戶均滿意

T(Toleration threshold):容忍或滿意閾值

F(Frustration threshold):失敗閾值

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

首頁Dashboard:頁面滾動條往下拉:

解釋:

statistics:數(shù)據(jù)分析,?基本將 Summary Report 和 Aggrerate Report 的結(jié)果合并,含義分別為:

請求名稱、請求數(shù)目、失敗請求數(shù)目、錯誤率(本次測試中出現(xiàn)錯誤的請求的數(shù)量/請求的總數(shù))、90%用戶響應(yīng)時間、95%用戶響應(yīng)時間、99%用戶響應(yīng)時間、吞吐量(吞吐量——默認(rèn)情況下表示每秒完成的請求數(shù)Request per Second,當(dāng)使用了?Transaction Controller?時,也可以表示類似?LoadRunner?的?Transaction per Second?數(shù))、Kb/sec(每秒從服務(wù)器端接收到的數(shù)據(jù)量,相當(dāng)于LoadRunner中的Throughput/Sec)、最小響應(yīng)時間、最大響應(yīng)時間

errors:錯誤情況,依據(jù)不同的錯誤類型,將所有錯誤結(jié)果展示

Chart-Over Time-Response Times Over Time:隨著時間推移響應(yīng)時間變化趨勢圖

可以看到歷時3分鐘,響應(yīng)時間由0.334ms慢慢下滑到0.225ms

Chart-Over Time-Bytes Throughput Over Time:隨著時間推移每秒接收和請求字節(jié)數(shù)變化趨勢圖,藍(lán)色為每秒發(fā)送字節(jié)數(shù),黃色為每秒接收字節(jié)數(shù):

Chart-Over Time-Latencies Over Time:隨著時間推移平均響應(yīng)延時趨勢圖,記錄客戶端發(fā)送請求完成后,服務(wù)器端返回請求之前這段時間

由于我測試用的并發(fā)請求百度,請求都被拒絕了,并沒有收到從服務(wù)端返回的請求,所以這里看到一條0的線

以上就是over time欄的所有圖表,除了over time還有throuput和response times欄

throuput欄:

Throughput欄包括:

hits?per second:每秒點擊率

codes per second:每秒狀態(tài)碼數(shù)量

Transactions?per second:每秒事務(wù)量

Response Time Vs Request: 響應(yīng)時間點請求的 成功/失敗 數(shù)

Latency Vs Request: 延遲時間點請求的 成功/失敗 數(shù)

Response Times欄:

response times欄包括:

Response Time Percentiles: 響應(yīng)時間百分比

Active Threads Over Time: 隨著時間推移活躍線程數(shù)

Time Vs Threads: 測試過程中的線程數(shù)時續(xù)圖

Response Time Distribution: 響應(yīng)時間分布

2. 使用之前的測試結(jié)果,生成測試報告

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

-g : 指定已存在的測試結(jié)果文件

-e :測試結(jié)果后,生成測試報告

-o : 指定測試報告的存放位置

-o 指定的文件及文件夾,必須 不存在 ,否則執(zhí)行會失敗

?使用命令行轉(zhuǎn)換的第一種和第二種方式其實最終都依賴生成的jtl文件,將jtl文件生成測試報告。雙擊測試報告中的index.html文件即可查看報告內(nèi)容

謝謝閱讀哦~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在使用Jmeter進行接口的性能測試時,由于Jmeter 是JAVA應(yīng)用,對于CPU和內(nèi)存的消耗比較大,所以,當(dāng)需...
    燕京博士閱讀 4,309評論 0 16
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 互聯(lián)網(wǎng)壓力性能Badboy.Jmeterhttp://itopic.org/jmeter-http-tcp.htm...
    燕京博士閱讀 3,141評論 0 20
  • 我的另一半世界 從這里開啟
    南宮影琪閱讀 237評論 0 0
  • 最近看了一篇文章,大意是講的如今貧富差距懸殊,當(dāng)窮人在花時間省錢的時候,富人用錢來買大把大把的時間。 看完我心里想...
    金木小殘閱讀 247評論 1 0

友情鏈接更多精彩內(nèi)容