Jmeter3.0-多維度的圖形化HTML報告


本文轉載於推酷:http://www.tuicool.com/articles/BNvuEzr

在JMeter3.0之前,官方只提供在工具的UI上對測試結果部分維度的圖形化展示,這對我帶來了兩方面的困擾:

  1. 在實際使用中,在平台中集成JMeter后需要頁面展示TPS曲線,平均響應時間曲線等圖表時,需要我們手動操刀擺弄如Hightcharts/Echarts等前端圖表庫。
  2. 要查看歷史的測試結果,需要啟動JMeter的圖形化界面,導入保存的CSV結果,過程繁瑣,並且當結果集較大時,JMeter需要耗費相當多的時間在界面上展示圖形化報告。

本文討論的新特性為這兩個問題帶來了較好的解決辦法:

  • 新特性良好的實現了結果數據可視化,生成的報告是HTML頁面形式,並且包含大多數實際測試中關心的度量維度的,可以便捷地嵌入到平台,從瀏覽器來查看每次測試運行的。
  • 只要保留生成的HTML頁面,后期要查看該次測試的結果,只需要在瀏覽器打開即可,方便快捷。

二.新特性簡介

JMeter3.0提供一個用於生成 HTML頁面格式圖形化報告 的擴展模塊。該模塊支持通過兩種方式生成多維度圖形化測試報告:

  1. 在JMeter性能測試結束時,自動生成本次測試的HTML圖形化報告
  2. 使用一個已有的結果文件(如CSV文件)來生成該次結果的HTML圖形化報告

其默認提供的度量維度包括:

  1. APDEX(Application Performance Index)指數
  2. 聚合報告
    • 類似於UI上的 Aggregate Report
  3. Errors報告
    • 展示不同錯誤類型的數量以及百分比
  4. 響應時間變化曲線
    • 展示平均響應時間隨時間變化情況
    • 類似於JMeter Plugins在UI上的 jp@gc - Response Times Over Time
  5. 數據吞吐量時間曲線
    • 展示每秒數據吞吐量隨時間變化的情況
    • 類似於JMeter Plugins在UI上的 jp@gc - Bytes Throughput Over Time
  6. Latency time變化曲線
    • 展示Latency time隨時間變化的情況
    • 類似於JMeter Plugins在UI上的 jp@gc - Response Latencies Over Time
  7. 每秒點擊數曲線
    • 類似於JMeter Plugins在UI上的 jp@gc - Hits per Second
  8. HTTP狀態碼時間分布曲線
    • 展示響應狀態碼隨時間的分布情況
    • 類似於JMeter Plugins在UI上的 jp@gc - Response Codes per Second
  9. 事務吞吐量時間曲線(TPS)
    • 展示每秒處理的事務數隨時間變化情況
    • 類似於JMeter Plugins在UI上的 jp@gc - Transactions per Second
  10. 平均響應時間與每秒請求數的關系圖
    • 展示平均響應時間與每秒請求數(可以理解為QPS)的關系
  11. Latency time與每秒請求數的關系圖
    • 展示Latency time與每秒請求數的關系
  12. 響應時間百分位圖
    • 響應時間的百分位分布圖
  13. 活動線程數變化曲線
    • 展示測試過程中活動線程數隨時間變化情況
  14. 平均響應時間與線程數的關系圖
    • 展示平均響應時間與線程數的關系
    • 類似於JMeter Plugins在UI上的 jp@gc - Response Times vs Threads
  15. 柱狀響應時間分布圖
    • 展示落在各個平均響應時間區間的請求數情況

注1:Latency time沒有翻譯成中文,這里對其計算方式做注解:

Latency time = 接收到響應的第一個字節的時間點 - 請求開始發送的時間點

from just before sending the request to just after the first response has been received

– Apache JMeter Glossary

響應時間(JMeter術語中的Elapsed time) = 接收完所有響應內容的時間點 - 請求開始發送的時間點

from just before sending the request to just after the last response has been received

– Apache JMeter Glossary

注2:Apdex 標准從用戶的角度出發,將對應用響應時間的表現,轉為用戶對於應用性能的可量化為范圍為 0-1 的滿意度評價。。

Apdex (Application Performance Index)is an open standard developed by an alliance of companies. It defines a standard method for reporting and comparing the performance of software applications in computing.

– wikipedia

三.快速入門

1.確認基本配置

  • 在jmeter.properties或者user.properties確認如下配置項:

    jmeter.save.saveservice.bytes = true
    jmeter.save.saveservice.label = true
    jmeter.save.saveservice.latency = true
    jmeter.save.saveservice.response_code = true
    jmeter.save.saveservice.response_message = true
    jmeter.save.saveservice.successful = true
    jmeter.save.saveservice.thread_counts = true
    jmeter.save.saveservice.thread_name = true
    jmeter.save.saveservice.time = true
    # the timestamp format must include the time and should include the date.
    # For example the default, which is milliseconds since the epoch:
    jmeter.save.saveservice.timestamp_format = ms
    # Or the following would also be suitable
    jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
  • 如果希望在Errors報告中展示更詳細數據,需要確保如下配置

    • jmeter.save.saveservice.assertion_results_failure_message = true
    • 如果使用了事務控制器(Transaction Controller),確認 Generate parent sample 為未勾選狀態

2.生成報告

a. 在壓力測試結束時報告

  • 基本命令格式: 
    jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>
  • 樣例: 
    jmeter -n -t F:\PerformanceTest\TestCase\script\getToken.jmx -l testLogFile -e -o ./output

b. 使用已有的壓力測試CSV日志文件生成報告

  • 基本命令格式: 
    jmeter -g <log file> -o <Path to output folder>
  • 樣例: 
    jmeter -g D:\apache-jmeter-3.0\bin\testLogFile -o ./output

兩個樣例都會在\apache-jmeter-3.0\bin\output目錄下產生如下文件(夾):

用瀏覽器打開index.html文件,即可查看各種圖形化報告:

四.自定義配置

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 圖表的實現類,如果有自己定制的實現,將該配置的值寫為自定義實現類的類名
  • title 圖標標題,比如要漢化的時候,在這里配置中文標題
  • 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 圖表所依賴的配置。前面部分接受一個正則表達式用來過濾。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM