如何自动化性能测试并与CI集成?

时间:2011-10-26 12:35:23

标签: java performance testing

我正在考虑自动执行性能测试,其方式与我们目前的单元测试相同。

我知道如何使用jMeter等工具运行性能测试,或者编写自己的代码来触发应用程序的特定部分。我知道如何使用time,jvisualvm,nmon或其他人来收集有关正在使用的资源的信息。

我想进一步编写一个性能测试,如果它超过某些行(执行时间,内存或CPU消耗......)就会失败。然后我会让我的CI服务器(Jenkins)定期运行测试,以确保性能保持良好。

这很复杂,因为性能取决于硬件,而且按照目前的方式,它需要人工解释结果来决定这是否令人满意。

您是否知道有助于以这种方式自动执行性能测试的任何工具或框架(如果可能的话,基于Java)?如果没有,你有一些好的建议吗?

感谢。

5 个答案:

答案 0 :(得分:3)

如果您的测试是主观的,那么为了使其自动化,您需要将一些主观性“排除”。我的意思是,设置一些你认为可接受且不可接受的阈值。看看是否有办法抛出旗帜或Jenkins可以接受的东西。如果你有这些门槛,你就有更好的机会获得你想要的自动化。

答案 1 :(得分:2)

过去,我曾使用JUnit进行一些性能测试。然而,它不需要人工解释 - 算法要么花费太长时间,要么足够快。在某种程度上,它是基于时间阈值的通过/失败测试。

如果你需要自动完成主观性能测试,恐怕很难建立。

答案 2 :(得分:2)

Jenkins有一个“性能插件”,可以捕获JMeter和JUnit的结果。在“管理Jenkins”下的“插件”下的“可用插件”中查找它

答案 3 :(得分:1)

要自动通过或失败测试,​​您必须能够根据布尔数来定义通过/失败标准。这可以是平均响应时间,或稍微更先进的统计分析,例如,趋势函数或标准差。

我不知道任何为客户端和服务器端做这种事情的工具。

对于客户端结果,可以使用有限数量的工具。

使用Jenkins Performance Plugin,您应该能够使用配置的错误阈值来传递/失败构建。这是测试结果的基本自动验证以及构建通过或失败的方法。

当我遇到类似的挑战时,我评估了Performance Plugin并且对它提供的功能并不完全满意。这样我开始研究基于Java的Lightning项目。它使您能够分析JMeter结果并自动传递构建,基于例如特定交易类型或标准差的平均响应时间。

答案 4 :(得分:0)

您可以使用带有ant的jmeter在CI服务器上自动运行perf测试。我不确定您是否可以捕获超过阈值的响应时间,但我想通过XSL / shell脚本编写应该很简单。您当然可以发布性能报告,但可以手动审核。