向 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 或构建管理服务器来实现。
使用 CI 服务器的目的在于,只要向项目的版本控制存储库应用了更改,就运行一个自动构建。您也可以将其配置为按特定次数运行构建。由于负载测试通常需要较多的计算资源,在这些资源未被占用时运行测试(例如深夜或清早)会比较好。
在 清单 5 中,一个自动构建被安排在晚上 11:00 点 (2300) 使用 CruiseControl(请参阅 参考资料)运行。您可以修改 CruiseControl 配置文件,以使用一个特定的 Ant 目标运行一个委托构建,比如一个给定的 run-load-tests
构建。
清单 5. 使用 CruiseControl 运行预定的负载测试
... <modificationset> <svn RepositoryLocation="${svnrepo.location}"/> <timebuild username="admin" time="2300"/> </modificationset> ... |
通过将负载测试安排在晚上运行(如清单 5 中一样),您将不会听到有关加班、休假或忘记运行测试等借口 — 它们会自动运行。
您已经看到了如何使用 Ant 显示 JMeter 测试报告。但是,JMeter 报告只能与单个机器上的一个开发人员通信。负载测试会影响整个应用程序,所以整个团队都会希望看到结果。好处在于,您可以轻松配置您的 CI 服务器,以显示这些报告。因为已经使用 Ant 生成了这些报告,所以只需要使 JMeter HTML 报告可以从 CruiseControl 项目仪表板访问。您可以向 CruiseControl 的 config.xml 文件添加几行代码来实现这个目的,如清单 6 所示:
清单 6. 配置 CruiseControl 来显示 JMeter 报告
<project name="brewery">...<log> <merge dir="merge dir="projects/${project.name}/reports/jmeter" /></log>...</project> |
现在,团队中的每个人都可以(真正地)共享这些信息了。很多其他 CI 和构建管理服务器也提供类似的报告集成功能。
在本文中,我展示了如何向您的开发工具箱添加自动化负载测试。通过使用自动构建运行负载测试,然后将测试安排为定期运行,您可以在系统容量问题出现之前及时发现它们。这种方法使得评估架构和数据更改的影响变得更加容易。当与本文章 系列 中描述的其他技术结合使用时,开发团队常常能够交付更高质量的软件。
文章来源于领测软件测试网 https://www.ltesting.net/