1. 程式人生 > >jmeter3.0生成html報告

jmeter3.0生成html報告

在上一篇部落格JMeter效能測試3.0時代之-全新JMeter外掛管理中我說會寫真正的JMeter 3.0新特性,時隔兩週,總算在這個週末,暫停其他安排,來繼續這個未完成的系列。
本文主要介紹JMeter3.0引入的新特性:Dashboard Report,圖形化的HTML格式多維度測試報告。藉助這個特性,可以很大程度上降低我們搭建基於JMeter的效能測試平臺時,在結果展示上的難度,將更多的經歷放在後端的平臺功能而不是去臨時學習前端圖表庫。

一.為什麼談這個新特性

在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上的[email protected] - Response Times Over Time
  5. 資料吞吐量時間曲線
    • 展示每秒資料吞吐量隨時間變化的情況
    • 類似於JMeter Plugins在UI上的
      [email protected]
      - Bytes Throughput Over Time
  6. Latency time變化曲線
    • 展示Latency time隨時間變化的情況
    • 類似於JMeter Plugins在UI上的[email protected] - Response Latencies Over Time
  7. 每秒點選數曲線
  8. HTTP狀態碼時間分佈曲線
    • 展示響應狀態碼隨時間的分佈情況
    • 類似於JMeter Plugins在UI上的[email protected] - Response Codes per Second
  9. 事務吞吐量時間曲線(TPS)
    • 展示每秒處理的事務數隨時間變化情況
    • 類似於JMeter Plugins在UI上的[email protected] - Transactions per Second
  10. 平均響應時間與每秒請求數的關係圖
    • 展示平均響應時間與每秒請求數(可以理解為QPS)的關係
  11. Latency time與每秒請求數的關係圖
    • 展示Latency time與每秒請求數的關係
  12. 響應時間百分點陣圖
    • 響應時間的百分位分佈圖
  13. 活動執行緒數變化曲線
    • 展示測試過程中活動執行緒數隨時間變化情況
  14. 平均響應時間與執行緒數的關係圖
    • 展示平均響應時間與執行緒數的關係
    • 類似於JMeter Plugins在UI上的[email protected] - 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檔案,即可檢視各種圖形化報告:



注:在3.0版本,由於原始碼中字元編碼的問題,可能會遇到生成的報告中,中文標籤展示為亂碼的問題,因篇幅限制,解決辦法請戳這裡看我另一篇文章。

四.自定義配置

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圖表所依賴的配置。前面部分接受一個正則表示式用來過濾。

五.總結

本次介紹的Dashboard Report特性本質上是Apache JMeter對於測試結果資料視覺化方式的順應時代的更新,雖然算是姍姍來遲,雖然並不酷炫,但至少,對於要需要基於它來執行效能測試的人來說,仍然是一個福音。最後,感謝Apache JMeter專案的各位貢獻者對它的持續更新。

References

相關推薦

jmeter3.0生成html報告

在上一篇部落格JMeter效能測試3.0時代之-全新JMeter外掛管理中我說會寫真正的JMeter 3.0新特性,時隔兩週,總算在這個週末,暫停其他安排,來繼續這個未完成的系列。 本文主要介紹JMeter3.0引入的新特性:Dashboard Report,圖形化的HTML格式多維度測試報告。藉助這個特

jmeter3.0生成html格式的dashboard性能測試結果

comm src gen ever sta lte tolerance for rect jmeter3.0以上支持生成dashboard的html報告,官網介紹:https://jmeter.apache.org/usermanual/generating-dashboa

jmeter5.0生成html報告 快速入門

JMeter效能測試5.0時代之-多維度的圖形化HTML報告 快速入門 1.確認基本配置 在jmeter.properties或者user.properties確認如下配置項: jmeter.save.saveservice.bytes = truejmeter.save.saveservi

二、通過ant來執行jmeter腳本生成html報告

ant jmeter 一、安裝ant1、下載地址:http://ant.apache.org/bindownload.cgi,下載需要的zip包2、把zip解壓到需要安裝的目錄下,如安裝路徑:D:\ProgramFiles\apache-ant-1.10.13、配置ant的系統環境變量:新建變量ANT

生成HTML 報告

htm inf 分享圖片 com 圖片 技術分享 info ima .com 生成HTML 報告

pytest 6 生成html報告

src ipp 所有 查詢 直接 存放位置 all 顯示效果 兼容 前言:pytest-HTML是一個插件,pytest用於生成測試結果的HTML報告。兼容Python 2.7,3.6 1.github上源碼地址【https://github.com/pytest-dev/

python+unittest 生成HTML報告

from selenium import webdriver import unittest import time import HTMLTestrunner class BaiDu(unittest.TestCase): def setUp(self): self.dri

Jmeter命令列執行並生成HTML報告

前提:準備好jmeter指令碼,找到jmeter配置檔案檢視生成的日誌格式是否為csv,如果不是請改為csv 注意:使用命令執行jmeter指令碼必須使用jmeter 3.0及以上版本1、使用命令列執行指令碼並生成日誌檔案進入到jmeter的bin目錄下執行命令:jmeter -n -t D:\test

jmeter非GUI執行指令碼+動態執行緒+生成HTML報告

本次記錄是在工作中為了能更好的用jmeter進行壓力測試,進行了幾個小時的蒐集資料,總結除錯,最終順利執行 希望每次總結的經驗對測試行業的同學會有所幫助,少踩些坑!!! 1.首先使用jmeter進行.jmx指令碼製作 2.有兩種操作    2.1.直接線上程組

Selenium第8課 生成html報告

一、跳過測試用例 1.無條件跳過,在用例上面加一個裝飾器:@unittest.skip(提示語句) 2.條件為True時跳過,加裝飾器:@unittest.skipIf((條件),(提示語句)) 3.條件為False時跳過,加裝飾器:@unittest.skipUnless((條件),(提示語句))

Uiautomator2.0生成測試報告

最近學習uiautomator2.0,原來可以直接生成測試報告,同時也比較美觀,下面請看。 在Android Studio中新建 一個專案 在app/下的build.gradle下,dependencies中增加對Uiautomator的支援: { ... andr

python 自動化程式碼生成html 報告

先介紹比較low的方法一: import unittest from unittest import TestSuite,TextTestRunner from HTMLTestRunner import HTMLTestRunner class Test1(

【jmeter】jmeter報告視覺化:配置生成報告儀表板,jmeter+Jenkins自動化構建生成HTML報告

目錄 一、jmeter報告儀表板相關資訊 二、檔案修改說明 三、jmeter.properties檔案配置 四、user.properties檔案配置 五、新建jtl報告目錄 六、複製jmeter.properties檔案並重命名 七、寫批處理bat檔案 八、準備

JMeter生成HTML報告

腳本文件 nload cmd repo text result target 後來 版本 http://www.51testing.com/html/80/n-3724580.html 有時候我們寫性能報告的時候需要一些性能分布圖,JMeter是可以生成HTML性能

使用Python進行文字資訊的比較並生成HTML報告

使用Python可以實現類似Linux中diff的命令,還能夠輸出HTML文件,這是我一直期待的。如果辦公環境十分封閉,使用diff命令都難的時候,這無疑是很好的補充。 Python中的標準庫有一個d

python筆記32-ddt框架優化(生成html報告註釋內容傳變量)

ima 最新版本 www object alt comm mage 用例 ron 至於什麽是ddt這個可以參考我之前寫的博客內容,使用ddt框架的時候,有個問題困擾我很久了,一直沒得到解決(也有很大小夥伴問過我,沒解決抱歉了!)這個問題就是:如何使用ddt框架時,生成的

JMeter工具Day1基礎知識之使用命令列生成html報告

JMeter執行方式有2種,一種是GUI模式,一種是NO-GUI模式。GUI模式就是介面模式,NO-GUI模式就是命令列模式。介面模式主要用來編寫和除錯指令碼用的,專案的真正執行最好是採用命令列模式,因為採用命令列模式可以和持續整合或者其它框架進行對接,做成自動化迴歸測試

jmeter+ant生成html報告

1.jdk安裝 2.jmter安裝 3.ant安裝 下載apache-ant-1.10.6-bin.zip,直接解壓就可使用,和jmeter類似 ant環境變數配置 新建系統變數:ANT_HOME,變數值為Ant的本地安裝路徑,如我的:D:\software\apache-ant-1.10.6 在系統變數P

JMeter3.2生成圖形化HTML報告

文件 overflow pro width vertica 測試文件 nowrap href png JMeter3.0引入了Dashboard Report,用於生成HTML頁面格式圖形化報告的擴展模塊。 該模塊支持通過兩種方式生成多維度圖形化測試報告: 在JMeter

JMeter3.0圖形化HTML報告中文亂碼問題處理(轉載)

ada zip 分析 需要 ted 原因 charsets 直接下載 行處理 由於個人在JMeter 3.0的實際應用中,腳本中的Test Plan/Sampler等元件命名都沒有使用中文,所以在之前介紹Dashboard Report特性的博客(原文戳這裏))成文時,沒有