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

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

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

插件轉(zhuǎn)換模式

插件轉(zhuǎn)換模式不僅可以將 JMeter報(bào)告-jtl 文件轉(zhuǎn)換成png,還能轉(zhuǎn)換成csv。

其中會用到1個(gè)批處理文件和4個(gè)jar文件,而且全部包含在 Command-Line Graph Plooting Tool中:

1. PluginsManagerCMD.bat (for windows)?或者 PluginsManagerCMD.sh (for linux), 選擇其中一個(gè)放到 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/?

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

如果想看這個(gè)jar包的使用方法,就點(diǎn)擊藍(lán)色的鏈接“Command-Line Graph Plotting Tool”, 跳轉(zhuǎn)界面有詳細(xì)的jar包使用說明哦(https://jmeter-plugins.org/wiki/JMeterPluginsCMD/)。里面這個(gè)支持轉(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)換格式的時(shí)候是這么被調(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一定是上述列表中的某一個(gè),其他就可能轉(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)用這個(gè)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 后面跟的是這個(gè)cmdrunner.jar在的實(shí)際目錄,根據(jù)情況看是否加上路徑

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

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

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

也就是說這里能夠?qū)⒔M件轉(zhuǎn)換成圖片的話,這個(gè)組件的名字一定是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, 但是我實(shí)際用的時(shí)候碰到了很多問題。

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

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

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

@echooff

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

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

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

@echooff

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

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

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

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

因?yàn)槲沂窃贘enkins Job中添加的Window Command:

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

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

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

在Editable Email Content中這么引用:

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

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

1. 在測試過程中將jtl轉(zhuǎn)成測試報(bào)告(在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啟動用在分布式測試場景下,不是分布式測試只是單點(diǎn)就不需要-r

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

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

??? -o : 指定測試報(bào)告的存放位置

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

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

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

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

首頁Dashboard:

解釋:

file:文件名

start time:開始時(shí)間

end time:結(jié)束時(shí)間

filter for display:過濾器

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

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

F(Frustration threshold):失敗閾值

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

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

解釋:

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

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

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

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

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

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

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

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

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

throuput欄:

Throughput欄包括:

hits?per second:每秒點(diǎn)擊率

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

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

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

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

Response Times欄:

response times欄包括:

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

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

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

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

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

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

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

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

-o : 指定測試報(bào)告的存放位置

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

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

謝謝閱讀哦~~

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

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

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

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