在持续集成/交付环境中添加性能测试的最佳方法是什么?

时间:2018-03-06 19:37:27

标签: jmeter continuous-integration performance-testing load-testing continuous-deployment

我即将在CI上集成性能测试,但我很难决定应该执行哪些操作以及如何运行它:

  1. 我应该对单个API运行负载测试,还是应该运行整个工作流程(例如:Login -> Home Page -> Search
  2. 我应该跑多久?
  3. 我是否还应该增加压力,峰值和浸泡测试? 我想,那些应该用完CI。
  4. 任何评论都会非常感激。

3 个答案:

答案 0 :(得分:3)

在持续集成过程中包含测试的主要思想是保护自己免受regressions的影响,即确保新功能或错误修复不会导致性能下降。

通常的做法是让短期Load Test涵盖基本功能并定期运行预期数量的用户(即每次提交或pull request到主/集成分支)。

如果你有足够的容量和环境可用性,那么soak test就位也是有意义的,但它应该不那么频繁发生(你想让建立时间足够短,不是吗?) ,即一夜之间或周末。这样您就可以识别出可能的memory leaks

这两种方法都假定通过先前的ad-hoc运行收集了一些参考度量,这可以被视为可接受的通过/未通过标准。

Stress test假定识别饱和度/断点,因此通常它不会包含在CI管道中并在主要版本之前手动运行。

查看How to Include Load Testing in your Continuous Integration Environment文章了解详情。

答案 1 :(得分:0)

如果不知道对您的应用程序有什么重要,那么很难说您应该测试什么。在许多应用程序中,测试登录性能不如测试搜索性能和次优使用时间重要。然而,获得针对测试数据的准确搜索性能可能具有挑战性,但几乎不可能。如果在CI上运行,可以开发脚本来测试关键或经常变化的区域中的性能。您的CI系统可以设置为监视这些区域的变化,然后在必要时启动性能测试。完成后,CI可以通知开发人员他或她所做出更改的区域中的表现是否达不到指定的阈值。我担心使用紧密的反馈循环运行一些关键任务性能测试,而不是担心运行多种类型的测试。请记住,有人必须维护这些测试和支持基础设施。

答案 2 :(得分:0)

如果您的开发人员持续提交代码并担心每次提交运行的大型负载测试,您可以要求他们批量提交并在以后触发构建以进行性能测试阶段。但是,如果QA阶段得到很好的优化并且可以在几分钟内完成,那么所有临时构建都可以通过完整的QA循环。 10-15分钟的时间段是构建完成全自动测试的良好间隔。现在,管道应将它们标记为非生产就绪的临时构建,并且应仅在完成所有性能测试后才允许它们。您还可以通过与CI QA测试匹配的短负载测试来扩展它,但将较大的负载测试推迟到一天结束。总之,构建的生产部署必须等到加载和浸泡测试完成。它确实限制了您在一天中多次部署而没有风险的能力。如果您更愿意接受某种程度的风险,您可以继续进行部署以进行诸如属性和配置更改之类的微小更改。