让开发自动化: 自动负载测试(2)

发表于:2014-11-27来源:uml.org.cn作者:Paul Duvall点击数: 标签:自动负载测试
在清单 1 中,我使用 Ant 的 taskdef 任务定义 JMeter 任务,我将其命名为 jmeter,这样我可以在该 Ant 脚本的其他地方使用它。要使用该脚本,您的 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 任务所需的属性为 jmeterhome、testplan(s)以及 resultlog 或 resultlogdir。(清单 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 中显示报告

  图 2 是一个使用清单 3 中的 xslt 任务生成的 HTML 报告的例子。它显示了每个运行的负载测试,以及测试状态、时间和所有测试的聚合状态和时间。

  图 2. 生成 JMeter HTML 报告

生成 JMeter HTML 报告

  稍后我将在本文中向您展示如何从 CruiseControl Continuous Integration (CI) 服务器(请参阅 参考资料)中显示这些报告。

  向 JMeter 传递参数

  根据您运行的测试类型,您可能想要传递参数和属性,以改变单个测试或一组测试执行的方式。例如,清单 4 展示了如何增加 JVM 内存并指定线程和循环的数量:

  清单 4. 向 JMeter 传递可选参数和属性

<jmeter
  jmeterhome="${jmeter.home}"
  resultlog="${basedir}/target/JMeterResults.xml">
  <jvmarg value="-Xincgc"/>
  <jvmarg value="-Xmx128m"/>
  <jvmarg value="-Dproperty=value"/>
  <property name="request.threads" value="5"/>
  <property name="request.loop" value="50"/>
  <property name="jmeter.save.saveservice.assertion_results" value="all"/>
  <property name="jmeter.save.saveservice.output_format" value="xml"/>
  <testplans dir="${basedir}/tests/load" includes="BreweryTestPlan.jmx"/>
</jmeter>

  可以使用很多内置的其他参数和属性来修改 JMeter 测试运行的方式(有关详细信息,请参阅 参考资料)。

  在执行负载测试的方式上,使用参数和属性提供了一定的灵活性,但是它不能解决如何在不同的目标环境中运行负载测试的问题,比如测试和验证环境。要向测试计划添加特定于环境的信息,您需要在 .jmx 文件中放入一些记号,以便当负载测试在自动构建脚本中运行时可以对 .jmx 文件进行过滤和修改。

  及时负载测试

  使用自动构建运行负载测试时,将其安排为按某个周期运行,比如每晚运行一次。您可以使用 CI 或构建管理服务器来实现。

原文转自:http://www.uml.org.cn/Test/200806101.asp