將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文件便可查看報告內容

 

謝謝閱讀哦~~

相關文章
相關標籤/搜索