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)中也涉及到了这个话题。