InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

通过JMeter和Ant实现自动负载测试

作者 Alexander Olaru 译者 张凯峰 发布于 2008年4月25日

领域
架构 & 设计,
语言 & 开发
主题
性能和可伸缩性 ,
软件测试 ,
Java
标签
Ant ,
CruiseControl
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)中也涉及到了这个话题。

查看英文原文:Hands-off Load Testing with JMeter and Ant

译者 张凯峰 InfoQ中文站编辑,有多年软件开发和测试经验,热衷参与技术社区与技术传播。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。