JMeter 也提供了一個不太詳細的 XSL 樣式表文件,用于總結負載測試的結果。
在 HTML 中顯示報告
圖 2 是一個使用清單 3 中的 xslt 任務生成的 HTML 報告的例子。它顯示了每個運行的負載測試,以及測試狀態、時間和所有測試的聚合狀態和時間。
圖 2. 生成 JMeter HTML 報告
稍后我將在本文中向您展示如何從 CruiseControl Continuous Integration (CI) 服務器(請參閱 參考資料)中顯示這些報告。
向 JMeter 傳遞參數
根據您運行的測試類型,您可能想要傳遞參數和屬性,以改變單個測試或一組測試執行的方式。例如,清單 4 展示了如何增加 JVM 內存并指定線程和循環的數量:
清單 4. 向 JMeter 傳遞可選參數和屬性
jmeterhome="${jmeter.home}"
resultlog="${basedir}/target/JMeterResults.xml">
可以使用很多內置的其他參數和屬性來修改 JMeter 測試運行的方式(有關詳細信息,請參閱 參考資料)。
在執行負載測試的方式上,使用參數和屬性提供了一定的靈活性,但是它不能解決如何在不同的目標環境中運行負載測試的問題,比如測試和驗證環境。要向測試計劃添加特定于環境的信息,您需要在 .jmx 文件中放入一些記號,以便當負載測試在自動構建腳本中運行時可以對 .jmx 文件進行過濾和修改。
及時負載測試
使用自動構建運行負載測試時,將其安排為按某個周期運行,比如每晚運行一次。您可以使用 CI 或構建管理服務器來實現。
安排 CruiseControl 每天運行負載測試
使用 CI 服務器的目的在于,只要向項目的版本控制存儲庫應用了更改,就運行一個自動構建。您也可以將其配置為按特定次數運行構建。由于負載測試通常需要較多的計算資源,在這些資源未被占用時運行測試(例如深夜或清早)會比較好。
在 清單 5 中,一個自動構建被安排在晚上 11:00 點 (2300) 使用 CruiseControl(請參閱 參考資料)運行。您可以修改 CruiseControl 配置文件,以使用一個特定的 Ant 目標運行一個委托構建,比如一個給定的 run-load-tests 構建。
清單 5. 使用 CruiseControl 運行預定的負載測試
...
...
通過將負載測試安排在晚上運行(如清單 5 中一樣),您將不會聽到有關加班、休假或忘記運行測試等借口 — 它們會自動運行。
在 CruiseControl 中顯示報告
您已經看到了如何使用 Ant 顯示 JMeter 測試報告。但是,JMeter 報告只能與單個機器上的一個開發人員通信。負載測試會影響整個應用程序,所以整個團隊都會希望看到結果。好處在于,您可以輕松配置您的 CI 服務器,以顯示這些報告。因為已經使用 Ant 生成了這些報告,所以只需要使 JMeter HTML 報告可以從 CruiseControl 項目儀表板訪問。您可以向 CruiseControl 的 config.xml 文件添加幾行代碼來實現這個目的,如清單 6 所示:
清單 6. 配置 CruiseControl 來顯示 JMeter 報告
...
...
現在,團隊中的每個人都可以(真正地)共享這些信息了。很多其他 CI 和構建管理服務器也提供類似的報告集成功能。
結束語
在本文中,我展示了如何向您的開發工具箱添加自動化負載測試。通過使用自動構建運行負載測試,然后將測試安排為定期運行,您可以在系統容量問題出現之前及時發現它們。這種方法使得評估架構和數據更改的影響變得更加容易。當與本文章 系列 中描述的其他技術結合使用時,開發團隊常常能夠交付更高質量的軟件。