Jmeter(三十七) – 從入門到精通進階篇 – 輸出HTML格式的性能測試報告(詳解教程)

1.簡介

   相對於Loadrunner,Jmeter其實也是可以有測試報告產出的,雖然一般都不用(沒有Loadrunner的報告那麼強大是一方面),但是有小夥伴們私下問,那宏哥還是順手寫一下吧,今天我們就來學習下,如何輸入HTML格式的JMeter測試報告。前面已經介紹, 如果要做性能測試,需要在GUI上設計好你的Test Plan,設置各種場景和負載值,包括多少個線程,多少個用戶,循環多少次。設置好了保存,然後用命令行去啟動性能測試,查看相關測試結果。

2.Jmeter生成HTML格式報告的架構

儀錶板生成引擎是基於示例操作流程的模塊化功能。
下圖可以表示這些過程:

在此視圖中,可以看到:

    • 產生樣品的來源(例如CSV文件)。
    • 一系列稱為消費者的項目,對通過該項目的樣本進行操作(例如,篩選,排序,計算等)。
    • 執行上下文,稱為樣本上下文,在其中存儲使用者計算的結果。
    • 一組名為出口器的項目,它們使用示例上下文的內容為用戶生成最終結果(例如HTML頁面生成)。

3.具體步驟

1. 打開圖像(gui)界面,新建一個Thread Group,如下圖所示:

2. 新建三個Http Request,分別是百度新聞首頁,和百度新聞財經,百度新聞體育,如下圖所示:

百度新聞首頁

百度新聞財經

百度新聞體育

3. 添加一個Assertion,選擇response assertion,如下圖所示:

4. 添加一個View Results Tree.如下圖所示:

5. Thread Group設置如下圖所示:

這裡,你在圖形界面的時候,最好設置都是1,測試通過後,再改成多個用戶,然後保存本地xx.jmx文件

6. 保存到本地,關閉JMeter。

7.本地先在桌面創建一個文件夾HttpReports,用來保存HTML報告。

8. cmd啟動性能測試,如下圖所示:

9.cmd 先要cd到jmeter的bin目錄,然後輸入以下命令:

jmeter -n -t D:\software\apache-jmeter-5.1.1\bin\Test Plan And Report.jmx -l C:\Users\DELL\Desktop\HttpReports\html.csv -e -o C:\Users\DELL\Desktop\HttpReports

三個路徑依次是:xxx.jmx文件路徑,輸出xxx.csv文件路徑,要保存的http report的文件路徑,運行結果如下圖所示:

10. 查看HTTP 報告,在桌面的HttpReports文件夾,生成了多個文件,如下圖所示:

11.用瀏覽器打開這個html文件,自己隨便點擊,看看報告,如下圖所示:

4.圖表信息詳解

Jmeter5.0後測試報告分為三部分,Dashboard、Charts和Customs Graphs,Jmeter5.0以下版本沒有第三項的。下面分開講解。

4.1Dashboard(概覽儀錶盤)

①、Test and Report informations

Test and Report informations:測試和報告信息: 測試結果保存文件/測試開始時間/測試結束時間/展示過濾器。

②、APDEX (應用性能指標)

APDEX(Application Performance Index):應用程序性能滿意度的標準,範圍在 0-1之間,1表示達到所有用戶均滿意,可以在配置文件設置。關於APDEX的相關信息,請參考這裡:應用性能指標;英文原文,參考這裡:Apdex-Wikipedia

③、Requests Summary

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

④、Statistics

統計表在一個表中提供每個事務的所有指標的摘要,包括3個可配置的百分位數。Statistics: 數據分析,基本將 Summary Report 和 Aggrerate Report 的結果合併。

⑤、Errors

錯誤表提供了所有錯誤及其在總請求中所佔比例的摘要。Errors: 錯誤情況,依據不同的錯誤類型,將所有錯誤結果展示。

⑥、Top 5 Errors by sampler

前5個錯誤(按Sampler列出)表為每個Sampler(默認情況下不包括Transaction Controller)提供前5個錯誤:Top 5 Errors by sampler:Top5錯誤信息採樣

4.2Charts(詳細信息圖表)

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

PS:由於詳細信息圖表有點多,這裡我挑幾個性能測試過程中比較關鍵的圖表解析!

Over Time

①、Response Times Over Time(腳本運行期間的響應時間變化趨勢圖)

說明:可以根據響應時間和變化和TPS以及模擬的並發數變化,判斷性能拐點的範圍。

②、 Response Time Percentiles Over Time (successful responses)

說明:腳本運行期間成功的請求響應時間百分比分佈圖,可以理解為聚合報告裏面不同%的數據,圖形化展示的結果。

③、Active Threads Over Time(腳本運行時間內的活動線程分佈)

 

④、Bytes Throughput Over Time(腳本運行期間的吞吐量變化趨勢圖)

說明:在容量規劃、可用性測試和大文件上傳下載場景中,吞吐量是很重要的一個監控和分析指標。

⑤、Latencies Over Time(腳本運行期間的響應延時變化趨勢圖)

說明:在高並發場景或者強業務強數據一致性場景,延時是個很嚴重的影響因素。

⑥Connect Time Over Time(腳本運行時間內平均連接時間)

 

Throughput

①、Hits Per Second (excluding embedded resources) 每秒點擊數曲線

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

③、Transactions Per Second 每秒事物數曲線

說明:每秒事務數,即TPS,是性能測試中很重要的一個指標,它是用來衡量系統處理能力的一個重要指標。

④、Total Transactions Per Second每秒通過事務總數

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

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

Response Times

①、 Response Time Percentiles(響應時間百分比分佈曲線圖)

說明:即響應時間在某個範圍內的請求在所有請求數中所佔的比率,相比於平均響應時間,這個值更適合用來衡量系統的穩定性。

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

③、Time Vs Threads(平均響應時間和線程數的對應變化曲線)

說明:可以通過這個對應的變化曲線來作為確定性能拐點的一個參考值。

④、Response Time Distribution響應時間分佈圖

4.3Customs Graphs

因為宏哥這裡沒有設置所以是空的,你可以根據自己需求定製自己的,具體的步驟請參考://jmeter.apache.org/usermanual/generating-dashboard.html#top

5.小結

1.在輸入命令運行的時候,宏哥遇到了找不到測試計劃(An error occurred: Unknown arg: Plan),宏哥第一感覺就是測試計劃的名字中間有空格(其他可能情況:特殊字符、路徑錯誤、中文等等吧)去掉後就可以運行了。

2.運行過程和製作會遇到4445端口是否允許通過防火牆或者安全性提示的信息,允許通過就可以了。

3.自定義配置

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

①、總體配置
總體配置都是以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,效果如下:

 

②、圖表配置

每個圖表配置都是以jmeter.reportgenerator.graph.<圖表名稱>.為前綴。

classname 圖表的實現類,如果有自己定製的實現,將該配置的值寫為自定義實現類的類名
property.set_granularity 設置圖標的採樣點粒度,不配置時默認使用總體配置中的粒度設置
③、輸出配置
輸出配置都以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圖表所依賴的配置。前面部分接受一個正則表達式用來過濾。
④、報告定製
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文件中修改,效果如下圖

Tags: