Stelligent公司CTO Paul Duvall在“人性自動化(Automation for the people)”系列文章中提到,如何把JMeter和Ant跟持續集成服務器集成到一起,讓開發者快速地決斷開發的系統在特定負載條件下的行為是否正確,及其是否適應所做的修改。Duvall首先列舉了一些這類測試所能度量的標準: 有多少并發用戶能夠訪問你的軟件系統? 可以加載多少數據而不會導致性能下降? 系統的吞吐量需求是怎樣的? 這些需求的測試周期有多久? 如果你能確定并驗證每天至少滿足一次負載和性能的需求,那會怎樣?
Duvall補充道,CI(持續集成)服務器計劃執行的自動化測試每天可以在機器利用率較低的時候運行,同時,這也可以“減少當你依賴個人來配置和運行這些測試時所導致的瓶頸和錯誤”。他描述了建立這樣一個環境所需的主要步驟有:
1. 運行JMeter并創建一個測試計劃。
JMeter是Apache項目,是用來負載功能測試和性能測試的Java工具。它同時提供GUI和命令行兩種調用方式,可以執行由測試計劃定義的各種負載測試。它附帶的測試計劃范例包括Web測試計劃,FTP測試計劃,Web service測試計劃等等。這些測試計劃可以通過GUI接口搭建,后以XML格式的保存。這樣一來,它將所需配置的值進行參數化,用戶因此可以定制運行測試的方式。
2. 使用Ant驅動JMeter測試。
在已經寫好的實現的基礎上,定義一個JMeter的Ant任務,比如"<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>",然后從Ant運行JMeter的負載測試。Duvall提供了一個在BreweryTestPlan.jmx文件(測試計劃的XML格式)中定義的測試搭建示例:
<jmeter
jmeterhome="${jmeter.home}"
resultlog="${basedir}/target/JMeterResults.xml">
<testplans includes="BreweryTestPlan.jmx" dir="${basedir}/tests/load">
</testplans>
</jmeter>
3. 通過XSLT和HTML修飾測試結果報告。
Duvall接著演示了測試的輸出結果——JMeterResults.xml——它可以通過JMeter的extras目錄中提供的XSLT腳本將該結果轉換成HTML報告。生成的報告上顯示了每次負載測試運行的結果,包括測試狀態、時間、集合狀態以及所有測試花費的時間。
4. 定制JMeter測試。
運行測試的方式可以通過修改參數和屬性來進行定制。為了讓測試適應特定環境的需求(比如測試或者分段),用戶可以在.jmx文件中標記一些記號,然后在運行該測試之前,根據環境需要對這些記號進行過濾和修改。Duvall還演示了如何增加JVM內存并指定線程和循環的數目。
5. 在CI環境中集成JMeter測試。
Duvall提供了一個與持續集成服務器CruiseControl集成的例子:在每天上午11點時運行build:
...<modificationset>
<svn repositorylocation="${svnrepo.location}">
<timebuild time="2300"/>
...
</svn>
</modificationset>
如果在CruiseControl的config.xml文件中添加幾行適當的代碼,JMeter的測試結果報告可以在CruiseContrl項目的dashboard中看到。
Krik Pepperdine在InfoQ上的文章迭代、自動化和持續性能(Iterative, Automated and Continuous Performance)中談及了持續性能[測試](Continuous Performance),Steve Haines的持續性能管理(continuous performance management presentation,可下載ppt)中也涉及到了這個話題。