Java让开发自动化:自动负载测试

让开发自动化 的这一期,自动化专家 Paul Duvall 将向您描述如何创建一个运行 JMeter 测试的预订集成构建,发现和修复开发周期中出现的问题。

您的软件系统可 供多少用户同时访问?在不引起性能下降的前提下可以加载多少数据?您的系统有多大的吞吐量需求?间隔多久测试一次这些需求?如果您每天至少可以指定并确认 一次这些负载和性能需求得到了满足,又会怎样?通过将负载测试作为预定的自动构建的一部分来运行,您可以更快地确定您的系统在某些负载条件下的执行情况, 并快速适应变化。

关于本系列

作为开发人员,我们的工作就是为终端用户实现过程自动化;然而,很多开发人员却忽略了将自己的开发过程自动化的机会。为此,我编写了 让开发自动化 这个系列的文章,专门探讨软件开发过程自动化的实际应用,并教您何时 以及如何 成功地应用自动化。

我 曾经参与过的一个项目建立了一组很好的自动化测试,可以对应用程序进行负载测试,同时它还可以运行多个事务。问题是,这些测试需要进行一些手动调节,所以 开发团队无法在没有人工干预的情况下运行这些测试。这限制了测试器可用时(通常仅工作几个小时)进行测试的次数。在实践中,测试要隔好几天才进行一次 — 间隔时间太长,无法及时检测问题。

在本文中,我将探讨如何使用 JMeter 创建自动化测试、将测试作为自动构建的一部分运行,以及将测试设置为每天自动运行(通常当机器的使用率低时)。将测试作为预定构建的一部分运行可以让您:

  • 在任何时候执行负载测试
  • 在开发过程的初期检测并解决负载和性能问题
  • 监视构建服务器的最新的负载测试和性能测试报告
  • 减少依靠单个人配置和运行测试时可能出现的瓶颈和错误

使用 JMeter 提升性能

Apache JMeter 是一个开放源码项目,您可以用来在服务器上模拟重负载(有关 JMeter 的更多信息,请参阅 参考资料)。JMeter 的文档集描述了如何使用它的很多功能,并提供了大量例子。

运行 JMeter

下载并解压缩 JMeter ZIP 文件(请参阅 参考资料 获得下载 JMeter 的链接)之后,使用命令提示符进入您解压缩 JMeter 的位置,并键入 cd bin 更改 bin 目录。从 bin 目录键入 jmeter 打开 JMeter Swing 应用程序,如图 1 所示:


图 1. JMeter GUI
使用 JMeter GUI 创建测试计划

创建测试计划

通过示例编写测试

JMeter 附带了很多示例测试计划和脚本。不必从头创建测试计划,您可以使用 docs 目录中的例子,并随着项目的发展逐步配置测试计划。复杂之处主要在于学习编写可以有效模拟负载和性能需求的负载测试。

您可以使用 JMeter GUI 创建测试计划。JMeter 中的不同测试计划类型包括:

  • Web 测试计划
  • 数据库测试计划
  • FTP 测试计划
  • LDAP 测试计划
  • 扩展 LDAP 测试计划
  • Web 服务测试计划
  • JMS 点对点测试计划
  • JMS 主题测试计划
  • 监视器测试计划
  • 侦听器

每 个测试计划都以 XML 格式存储在一个后缀名为 .jmx 的文件中。这种非二进制的格式使以后编辑计划更容易。尽管您可以通过以下 JMeter XML 模式来创建测试计划,但是使用 GUI 要容易得多。稍后您将看到一个例子,该例子用参数表示 JMeter 的配置值,以自定义测试的运行方式。





回页首


节省劳力的负载测试

使用 GUI 运行测试,需要一个 来亲自执行它们。这会增加过程瓶颈和知识筒仓的可能性。 通过自动构建(比如 Ant 构建)运行测试,您可以配置 JMeter 测试来运行,而无需打开 JMeter 应用程序。另外,该测试每次都以同样的方式运行 — 不会增加额外的工作。

使用 Ant 操作 JMeter 测试

学 习了如何使用 GUI 软件工具后,我想看看它是否可以从命令行运行某些实用工具,这样我就不需要反复执行同样的操作。例如,每次打开 JMeter 应用程序时,我喜欢选择 File > Open 来打开文件,然后运行一次或多次测试。我可以为这些组操作编写一个脚本,每次以同样的方式运行它们。幸运的是,已经有人编写了一个 Ant 任务来为 JMeter 做这件事:它执行负载测试,同时提供了一种传入可选参数和属性的方式。

示例构建脚本

JMeter 分区的 extras 目录包含一个示例 build.xml 脚本,说明了 JMeter Ant 任务的用法。

在清单 1 中,我使用 Ant 的 taskdef 任务定义 JMeter 任务,我将其命名为 jmeter,这样我可以在该 Ant 脚本的其他地方使用它。要使用该脚本,您的 Ant 类路径中必须存在 ant-jmeter.jar 文件(请参阅 参考资料 获得下载链接)。


清单 1. 在 Ant 中定义 JMeter 任务
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>

清单 2 中的示例代码运行一个 JMeter 负载测试 BreweryTestPlan.jmx。要运行某个目录中的所有测试,只需输入 *.jmx,而不是特定的文件名。jmeter 任务所需的属性为 jmeterhometestplans)以及 resultlogresultlogdir。(清单 2 未显示 resultlogdir,因为它使用 resultlog。)


清单 2. 从 Ant 运行 JMeter
<jmeter
jmeterhome="${jmeter.home}"
resultlog="${basedir}/target/JMeterResults.xml">
<testplans dir="${basedir}/tests/load" includes="BreweryTestPlan.jmx"/>
</jmeter>

清单 2 中的 Ant 代码创建了一个名为 JMeterResults.xml 的输出文件,用于创建 HTML 报告。

使用 XSLT 呈现报告

将 JMeterResults.xml 文件作为清单 3 中的 xslt Ant 任务的输入,可以为清单 2 中运行的所有 JMeter 测试生成一个 HTML 报告。在 JMeter extras 目录中提供的 XSL 样式表(jmeter-results-detail-report_21.xsl)用于将 JMeterResults 文件转换为 HTML。


清单 3. 使用 XSLT 创建 JMeter HTML 报告
<xslt in="${basedir}/target/JMeterResults.xml"
out="${basedir}/target/JMeterResults.html"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"/>

JMeter 也提供了一个不太详细的 XSL 样式表文件,用于总结负载测试的结果。

在 HTML 中显示报告


本文转自IBM Developerworks中国

        请点击此处查看全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值