JMeter如何生成Dashboard報表?
一、概述
在本教程中,我們將探索 JMeter 儀表板報告生成。 JMeter 是一種用 Java 編寫的流行測試工具。我們使用 JMeter 進行負載、性能和壓力測試。除了生成豐富的統計數據外,一個重要的功能是以有用的可視化格式顯示測試結果。 JMeter 正是這樣做的,它允許我們生成除多種格式的文本報告之外的儀表板報告。
2.先決條件
我們需要一個帶有 JMeter maven 插件的 Spring Boot 應用程序。我們已經設置了一個具有三個端點的示例 Spring Boot MVC 應用程序。端點返回一條問候消息、當天的報價和服務器時間。這就是我們運行 JMeter 測試並生成儀表板報告所需的全部內容。
3. 運行 JMeter 測試
現在,讓我們看看針對我們的應用端點運行 JMeter 測試。
3.1.創建 JMeter 測試計劃
使用 JMeter GUI,我們將生成一個 JMeter 測試計劃。
讓我們使用 JMeter GUI 創建一個測試計劃ReportsDashboardExample.jmx
:
${project.basedir}/src/main/resources/dashboard/ReportsDashboardExample.jmx
除了將我們的測試計劃保存在一個文件中,我們還可以將現有的計劃加載回我們的 JMeter GUI .
此外,我們可以根據需要對其進行審查和更新。在我們的例子中,我們有一個非常簡單的測試計劃,足以滿足我們的演示目的。
當我們執行測試計劃ReportsDashboardExample.jmx,
它會將測試結果生成到 CSV 文件ReportsDashboardExample.csv
中。
接下來,讓我們生成 JMeter 儀表板報告。 JMeter 使用我們在ReportsDashboardExample.csv
文件中提供的測試結果來生成儀表板報告。
3.2.配置 JMeter Maven 插件
JMeter Maven 插件配置很重要:
<configuration>
<testFilesDirectory>${project.basedir}/src/main/resources/dashboard</testFilesDirectory>
<resultsDirectory>${project.basedir}/src/main/resources/dashboard</resultsDirectory>
<generateReports>true</generateReports>
<ignoreResultFailures>true</ignoreResultFailures>
<testResultsTimestamp>false</testResultsTimestamp>
</configuration>
generateReports
元素設置為true
指示插件生成儀表板報告。 JMeter 默認在target/jmeter
目錄下生成報告。但是,我們也可以覆蓋默認行為。
3.3.生成儀表板報告
為了運行 JMeter 測試,我們創建了一個名為dashboard
的 Maven 配置文件。將名為“ env'
的環境變量設置為“ dash'
映射的值並激活儀表板配置文件:
...
<profile>
<id>dashboard</id>
<activation>
<property>
<name>env</name>
<value>dash</value>
</property>
</activation>
...
使用此配置文件運行代碼的 Maven 命令是:
mvn clean install -Denv=dash
雖然我們可以更改全局設置,但設置單獨的配置文件會隔離我們的特定依賴項、插件和配置。這使我們能夠避免觸及pom.xml
中的任何其他配置文件和全局部分。
3.4.查看儀表板報告
在測試運行期間,生成的日誌為我們提供了報告目標路徑以及其他信息:
[INFO] Will generate HTML report in [PATH_TO_REPORT]
從此路徑打開index.html
,我們得到儀表板視圖:
這個儀表板以一種很好的格式為三個端點中的每一個提供了我們測試的統計數據。相應的圖表支持我們的表格數據。餅圖都是綠色的,這表明我們所有的測試都是成功的。但是,我們也可以引入一些錯誤以使其更真實。例如,我們可以創建一個指向不存在端點的HTTP Request Sampler
。因此,這也會在餅圖中引入紅色區域。
我們的儀表板報告生成練習到此結束。接下來,我們來看看我們的項目配置。
4. Maven 目標
我們的目標之一是在我們的測試環境中運行示例應用程序。因此,我們的 JMeter 測試能夠使用我們本地測試環境中的目標端點。讓我們深入了解相應的pom.xml
配置。
4.1. Spring Boot Maven 插件
在我們的例子中,我們希望 Maven 目標將 Spring Boot 應用程序作為守護進程運行。因此,我們使用spring-boot-maven-plugin
的start
和stop
目標。此外,這兩個目標包裝了來自 JMeter Maven 插件的目標。
Spring Boot Maven 插件start
目標保持 Web 服務器運行,直到我們停止它:
<execution>
<id>launch-web-app</id>
<goals>
<goal>start</goal>
</goals>
<configuration>
<mainClass>com.baeldung.dashboard.DashboardApplication</mainClass>
</configuration>
</execution>
我們的 Maven 配置文件中的最後一個目標是相應的stop
目標:
<execution>
<id>stop-web-app</id>
<goals>
<goal>stop</goal>
</goals>
</execution>
4.2. JMeter Maven 插件
我們將來自 JMeter Maven 插件的目標包裝在 Spring Boot start
和stop
目標之間。我們希望在 JMeter 測試完成執行時保持 Spring Boot 應用程序運行。我們的pom.xml
文件定義了jmeter-maven-plugin
的configure
、 jmeter
和results
目標。此外,帶有 id jmeter-tests
的執行執行兩個目標: jmeter
目標和results
目標:
...
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
<goal>results</goal>
</goals>
</execution>
...
在某些情況下,如果發生錯誤,最後停止服務器的目標將無法執行,從而導致 Web 服務器永遠運行。但是,我們可以手動停止 Web 服務器。我們必須找出我們的 Spring Boot 應用程序的進程 ID,然後從我們的命令行或 Bash shell 手動終止進程。
5.結論
在本文中,我們了解了 JMeter 儀表板報告的生成。獲取可視化報告始終是一種比純文本分析數據更有用、更高效、更簡單的方法。
在我們的例子中,我們使用 JMeter 來測試網絡端點。 JMeter 還涵蓋其他用例。一些示例是測試 RESTful 服務、數據庫和消息服務。
我們還可以添加斷言來創建通過/失敗標準。 JMeter GUI 提供了一個更簡單的界面來構建您的測試計劃。然而,在生產中,我們對 JMeter 使用非 GUI 模式,因為 GUI 模式是資源密集型的。
我們還可以使用資源集群來運行具有更大負載的 JMeter 測試。這是 JMeter 大規模測試的典型配置。
一如既往,本文示例的源代碼可在 GitHub 上獲得。