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