1. 程式人生 > >JMeter:生成漂亮的多維度的HTML報告

JMeter:生成漂亮的多維度的HTML報告

JMeter:生成漂亮的多維度的HTML報告
我們做效能測試的時候會經常使用一些效能測試工具,我個人比較喜歡Jmeter這個工具,但是JMeter這個工具在生成測試報告方面一直有所欠缺。但是JMeter在3.0以後解決了這個問題。

JMeter3.0以後引入了Dashboard Report,用於生成HTML頁面格式圖形化報告的擴充套件模組,但是請大家注意一個問題JMeter3.0直接生成報告會出現中文亂碼,建議大家使用3.1之後的版本,我這裡使用的是3.2。

那麼是如何生成HTML報告的呢,我們一起來看一下。

一、如果沒有.jtl檔案,執行如下命令:
jmeter -n -t source.jmx -l result.jtl -e -o /tmp/ResultReport
我們來看一下這條命令的引數:
-n :以非GUI形式執行Jmeter
-t :source.jmx 指令碼路徑
-l :result.jtl 執行結果儲存路徑(.jtl),此檔案必須不存在
-e :在指令碼執行結束後生成html報告
-o :用於存放html報告的目錄
在這之前呢大家需要自己準備好JMeter的指令碼,如下是我執行命令截圖:

 

 

二、如果已經存在結果檔案(.jtl),可執行如下命令生成報告
jmeter -g result.jtl -o /tmp/ResultReport
引數:
-g : result.jtl 已經存在的.jtl檔案的路徑。
-o :用於存放html報告的目錄
這種沒有日誌列印,下面是截圖:

 


無論採用哪種方式,執行完後會在執行的目錄生成如下檔案或資料夾:

 

 

雙擊開啟index.html檔案,就可以看到報告了。如圖:

 

 

這個報告總體分為兩部分:Dashboard和Charts。
先看一下Dashboard中都有什麼?

Test and Report informations:測試和報告資訊: 測試結果儲存檔案/測試開始時間/測試結束時間/展示過濾器。

 

 

APDEX(Application Performance Index):應用程式效能滿意度的標準,範圍在 0-1之間,1表示達到所有使用者均滿意,可以在配置檔案設定。

 

 

Requests Summary: 請求的通過率(OK)與失敗率(KO),百分比顯示。

 

Statistics: 資料分析,基本將 Summary Report 和 Aggrerate Report 的結果合併。

 

Errors: 錯誤情況,依據不同的錯誤型別,將所有錯誤結果展示。

 

Top 5 Errors by sampler:Top5錯誤資訊取樣

 


接下來看一下Charts裡的內容:

Charts裡如圖所示分為三大塊:時間維度資訊(Over Time)、吞吐量(Thorughput)、響應時間(Response Times)

 

 

Over Time
● Response Times Over Time指令碼執行時間內響應時間分佈曲線

 

 

● Response Time Percentiles Over Time (successful responses) 指令碼執行時間內成功響應的請求,響應時間百分位

 

● Active Threads Over Time 指令碼執行時間內的活動執行緒分佈

 

● Bytes Throughput Over Time指令碼執行時間內的吞吐量,單位是byte

 

● Latencies Over Time指令碼執行時間內毫秒級的響應延時

 

● Connect Time Over Time指令碼執行時間內平均連線時間

 


Throughput

● Hits Per Second (excluding embedded resources) 每秒點選數曲線

 

● Codes Per Second (excluding embedded resources)每秒狀態碼分佈曲線

 

● Transactions Per Second 每秒事物數曲線

 

● Response Time Vs Request 響應時間中值與每秒請求數關係曲線

 

● Latency Vs Request 延遲時間中值與每秒請求數關係曲線

 


Response Times

● Response Time Percentiles毫秒級百分位響應時間曲線

 

● Response Time Overview 響應時間概述柱狀圖

 

● Time Vs Threads 活動執行緒與平均響應時間變化曲線

 

● Response Time Distribution響應時間分佈圖

 

 

 

 

 

 

四.自定義配置

JMeter3.0在bin目錄新增了reportgenerator.properties檔案儲存了所有關於圖形化HTML報告生成模組的預設配置,要變更配置,建議不要直接編輯該檔案,而是推薦在user.properties中去配置和覆蓋。

1.總體配置
總體配置都是以jmeter.reportgenerator.為字首,如:jmeter.reportgenerator.overall_granularity=60000

overall_granularity:定義取樣點粒度,預設為60000ms,通常在穩定性以外的測試中,我們可能需要定義更細的粒度,比如1000ms,我們可以在user.properties檔案末尾新增如下配置:
# Change this parameter if you want to change the granularity of over time graphs.
jmeter.reportgenerator.overall_granularity=6000
report_title:定義報告的標題,我們可能需要將標題定義為實際測試項名稱
apdex_satisfied_threshold:定義Apdex評估中滿意的閾值(單位ms)
apdex_tolerated_threshold: 定義Apdex評估中可容忍的閾值
Apdext = (Satisfied Count + Tolerating Count / 2) / Total Samples
另外,在jmeter.properties中,有關於集合報告中的三個百分位的預設值:

aggregate_rpt_pct1 : Defaults to 90
aggregate_rpt_pct2 : Defaults to 95
aggregate_rpt_pct3 : Defaults to 99


可以在user.properties中對其進行覆蓋,如:aggregate_rpt_pct1 = 70,效果如下:

 

 

2.圖表配置
每個圖表配置都是以jmeter.reportgenerator.graph.<圖表名稱>.為字首。

classname 圖表的實現類,如果有自己定製的實現,將該配置的值寫為自定義實現類的類名
property.set_granularity 設定圖示的取樣點粒度,不配置時預設使用總體配置中的粒度設定
3.輸出配置
輸出配置都以jmeter.reportgenerator.exporter為字首。

property.output_dir 配置預設的報告輸出路徑。在命令列可以用-o選項來設定特定的路徑覆蓋該配置。
html.series_filter 用於過濾展示內容。如在user.properties新增如下配置:
jmeter.reportgenerator.exporter.html.series_filter=(^Login)(-success|-failure)?
則最後的報告只展示名為Login這個取樣器的資料。該配置包含兩部分,(-success|-failure)?是Transactions per second圖表所依賴的配置。前面部分接受一個正則表示式用來過濾。
4.報告定製
JMeter的HTML報告生成時是使用了固定的模板,模板檔案路徑為./bin/report-template。
進入該目錄可以看到報告的每個頁面都有一個.fmkr模板檔案,包括index.html.fmkr和./content/pages路徑下的幾個檔案。通過檢視這些模板檔案,就可以知道怎樣去進行報告的輕度定製,比如將一些文字修改得更易懂,或者修改為中文等

頁面的title
預設為"Apache JMeter Dashboard"
可以由reportgenerator.properties中的jmeter.reportgenerator.report_title來統一定義,這種方式就是所有頁面的title都使用同一個。
也可以直接修改對應的.fmkr檔案中的title標籤中雙引號內的值,如<title>${reportTitle!"想要設定的title"}</title>,這中方式可以為每個頁面單獨定義title
圖表的名稱
當前版本下,各圖表的名稱是直接在模板檔案中定義,要修改也是直接修改模板檔案中對應元素的值即可
如要修改Transactions Per Second圖表的名稱,可以直接在./content/pages/Throughput.html.fmkr檔案中修改,效果如下圖