首先,JMeter 是包含在 CI 中的一个不错的选择,因为它可以从命令行运行,并且您可以在执行此操作时传入变量。我会推荐它来完成这项任务。
但总的来说,集成 Perf。测试 CI 很困难。您已经列出了许多原因,所以您已经成功了一半,因为您了解这些限制。这就是问题所在:Perf 是可能的。CI 中的测试,但仅限于有限的范围。
我认为一个好的方法遵循以下一些原则:
您不能在 CI 中运行全负载(或浸泡或容量)测试,这是不切实际的。
结果是主观的,需要人工解释,运行测试需要时间。但是您可以运行一组更简单、精简的测试来测量请求的响应时间,然后您可以评估这些响应时间:
- 针对 NFR 或预期范围 - 即。应该小于 1 秒。
- 与以前的结果相反 - 即。与上次构建的偏差不应超过 10%。
您还可以运行自动加载/性能。测试 - 全量 - 在构建过程之外。'半CI'。
所以也许你可以自动化一个测试,让它在一夜之间运行,然后在早上检查结果?
迭代。
只需开始这样做并获得结果并微调测试以及随着时间的推移如何解释它们。保持简单并专注于看起来有用的领域。不要大张旗鼓地启动,保持安静,直到你对过程有信心,然后开始失败构建并告诉人们 - 最初,你可能会得到很多假阴性。
检测你的结果
这样做。很多。CI 就是尽早失败,所以如果你把它作为你的最终目标,那么实现它的最好方法就是尽早并经常运行测试,但这样做的问题是你有可能被数据埋没。因此,一种处理数据并呈现相关信息的有效方法会大有帮助。
你不能将整个过程自动化到红旗绿旗——但你应该尽可能地沿着这条路走下去。
最后,领队Perf做了一个非常好的演讲。涵盖此主题的 Google 测试人员。现在有点老了,但原则仍然存在。另外,几周后我将参加一个聚会,英国媒体公司 Channel4 将讨论他们是如何处理这个问题的——也许你可以索要一些幻灯片。