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

2021-03-02 北京宏哥
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

因為宏哥這裡沒有設置所以是空的,你可以根據自己需求定製自己的,具體的步驟請參考:https://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文件中修改,效果如下圖

相關焦點

  • Jmeter性能測試 入門
  • 性能測試教程[7] jmeter接口自動化回歸測試
    3.用戶名沒填4.帳戶錯誤5.密碼錯誤可以使用jmeter發起接口測試,並將測試結果寫入到excel。定期執行測試腳本,檢查執行結果。計劃通過beanshell取樣器調用java方法實現創建excel文件和寫入結果到Excel文件。
  • Jmeter性能及自動化全集
    正好今年雙十一,我司的全鏈路壓測,也嘗試了jmeter分布式壓測的手段。這篇博客,介紹下利用jmeter在NGUI模式下進行分布式壓測的 閱讀全文jmeter(二十六)生成HTML性能測試報告摘要:性能測試工具Jmeter由於其體積小、使用方便、學習成本低等原因,在現在的性能測試過程中,使用率越來越高,但其本身也有一定的缺點,比如提供的測試結果可視化做的很一般。
  • Jmeter生成壓力測試報告
    Jmeter生成壓力測試報告根據各大招聘網站上的需求來看,熟悉Jmeter做性能測試已經幾乎成為必要條件了。那麼今天在這個給大家安利一波。怎麼使用Jmeter生成壓力測試報告呢?2、輸入jmeter -n -t D:\Jmeter\apache-jmeter-3.2\bin\test.jmx -l result.jtl -e -o D:\Jmeter\apache-jmeter-3.2\bin\WebReportPS:紅框部分的jmx路徑地址以及生成的html測試報告路徑地址必須要正確
  • 「教程分享」Jmeter入門教程
    1.能夠對HTTP和FTP伺服器進行壓力和性能測試, 也可以對任何資料庫進行同樣的測試(通過JDBC)。6.緩存和離線分析/回放測試結果。JMeter的高可擴展性1.可連結的取樣器允許無限制的測試能力。2.各種負載統計表和可連結的計時器可供選擇。3.數據分析和可視化插件提供了很好的可擴展性以及個性化。4.具有提供動態輸入到測試的功能(包括Javascript)。
  • 資料包:爬蟲最新整理 | 軟體測試全系列全套資源
    》之 QTP從入門到精通https://pan.baidu.com/s/168OjNadZNUxbUolwa7H4Wg 提取碼:aw9c二、LR系列(LoadRunner、性能測試、壓力測試系列教程)LR 中科院 視頻教程 經典https://pan.baidu.com/s/1gxJBbfdRj
  • JMeter安裝與接口測試入門
    從本文開始,我將用心寫一個關於JMeter的文章系列,無論你是渴望入門,還是尋求進步,我希望你們都能從這裡有所收穫。歡迎關注❤️、評論📝、點讚👍!JMeter當初是為性能測試而生,與loadrunner形成競爭之勢,相對於loadrunner,JMeter在性能測試方面有自己的優點:JMeter開源,而loadrunner收費。
  • 【聖誕特輯】Stata從入門到精通:學習資源推薦
    本次推送對於市面上常見的Stata教程進行了整理匯總,難度覆蓋了入門到精通,並對每項教程附上了簡單介紹和獲取方式。
  • JMeter性能測試步驟是什麼?如何做軟體的性能測試?
    jmeter性能測試的步驟前提條件:規劃好性能測試所需要的標準,例如想要計算出來20個並發的前提下,在100QPS(每秒的請求數量)的壓力下,伺服器反饋響應時間的長短,然後形成報表來統計服務應用性能同時也可以針對每個接口的上下文建立起關聯,我們這裡以單接口的測試流程為例。請求參數分為parameters:代表著類似url後面直接拼接參數。bodys Data通常用來Form提交參數或者Json數據參數。Files Upload:代表著上傳文件。對應參數添加之後,接口基本信息完成。
  • 接口測試詳解JMeter學習(廣州中軟卓越)
    Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。 它可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、資料庫、FTP 伺服器, 等等。
  • 接口&性能測試工具-JMeter環境部署
    教程演示環境(環境僅供參考):系統平臺: Windows 平臺系統版本: Windows 10 家庭中文版步驟:獲取 JMeterJMeter 基本使用步驟1: 獲取 JMeter官網下載步驟2: 部署 JMeter部署前提: 以本教程中使用的
  • jmeter單機最大負載_手把手教你用jmeter做壓力測試(詳圖)
    >」進行關注,微信公眾號TestMadman一.前言壓力測試是每一個Web應用程式上線之前都需要做的一個測試,他可以幫助我們發現系統中的瓶頸問題,減少發布到生產環境後出問題的機率;預估系統的承載能力,使我們能根據其做出一些應對措施。
  • 手把手教你如何使用jmeter做性能測試
    本文共3040字  閱讀約需5分鐘(後臺回復「Python福利」獲取一份Python學習入門圖解)一、為什麼要寫這篇文章?所以當他說出困惑後,我想了想,我還是可以幫上一些人的,必須堅持寫下去,幫助一些渴望學習技術的同學,所以就專門寫了這篇文章。那麼就我限有的知識,來詮釋怎麼做一個功能的性能測試。
  • Excel PPT Word 從入門到精通教程合輯 只要9.9
    原標題:Excel PPT Word 從入門到精通教程合輯 只要9.9 臨近歲末,年會party滿天飛!但年終總結卻讓人愁 T-T 看看自己的Word排版辣麼醜,PPT只會套模板,Excel圖表做不明白……
  • 資料包:爬蟲最新整理 | 一套完整的測試文檔
    》之 QTP從入門到精通https://pan.baidu.com/s/168OjNadZNUxbUolwa7H4Wg 提取碼:aw9c二、LR系列(LoadRunner、性能測試、壓力測試系列教程)LR 中科院 視頻教程 經典https://pan.baidu.com/s/1gxJBbfdRj
  • 視頻教程:Java從入門到精通
    正在閱讀:視頻教程:Java從入門到精通視頻教程:Java從入門到精通2006-06-28 15:42出處:作者:孫鑫>   《Java從入門到精通》視頻教程由孫鑫老師錄製(作者網站:http://www.sunxin.org),教程通俗易懂,內容全面,帶領Java初學者從入門到精通,快速掌握 Java 程式語言。
  • R語言從入門到精通:Day6-R語言數據操作進階及控制結構
    數據處理是R語言和數據挖掘的重要基礎,要求大家務必熟練操作,所以今天我們就從一個簡單的實例出發,給大家繼續講解數據處理進階及控制結構。1、本節內容重點內容較多,      務必緊跟紅色標記。2、測試數據及代碼      見文末客服小姐姐二維碼。
  • 基於JMeter對J2EE應用程式進行性能測試
    【IT168 技術文章】  JMeter是apache的jakarta上面的項目,用於軟體的壓力測試(Load Test),不但可以對HTTP,也可以對資料庫(通過JDBC)、FTP、Web Service、Java 對象等等進行壓力測試。最近,在我們的項目中使用到了它。
  • 電商性能測試實戰 | JMeter 插件 Ultimate Thread Group 完成梯度遞增場景的壓測
    ,想一起系統進階的同學文末加群交流。前面幾篇文章已經介紹完一個電商從註冊登錄到購物下單的典型場景的 Jmeter壓測腳本,具體可參考前期文章:基於電商模式的性能測試(五)-基於Jmeter完成一次日常典型電商場景的壓測(下單-支付)。1、場景調整在實際壓測前,我們還需要對場景做適當的調整。