具有外部依赖项的性能测试

mar*_*bon 7 stub external-dependencies performance-testing

在微服务世界中进行性能测试时(主要是负载测试),您的应用程序依赖的外部依赖项 (API) 的方法是什么,但不由您的团队拥有/控制。在我的情况下,外部依赖项由同一公司内的团队拥有。那么您会指向相应的“真实”集成非产品端点,还是会创建存根并模拟它们的响应时间以尽可能匹配生产?

  • 第一种方法示例:您团队拥有的后端 api 并调用外部 api 来验证客户。您的团队无法控制客户 API,但您在运行负载测试时仍指向他们的集成测试端点。
  • 第二种方法示例:您团队拥有的后端 api 调用发送静态响应并模拟外部客户 api 响应时间的存根。

我意识到这两种方法各有利弊,根据测试的目标,一种方法优于另一种方法。但你最喜欢的是什么?不一定要在上述两者之间进行选择。可以是完全不同的。

Set*_*eth 8

识别被测系统(或应用程序)非常重要。如果您只测量自己的微服务的性能,那么您可以考虑存根作为一种选择。

然而,性能测试通常是为了评估整个系统的性能。目的通常是模拟实际使用中的延迟。稍微准确地对此进行建模的唯一方法是存根并使用“真实”集成端点。这种方法还有其他优点,因为它可以帮助您识别潜在的系统性能瓶颈,例如微服务之间的链式同步调用(服务 A 调用 B,B 调用 C,C 调用 D 等)。这些测试还可以重复用于负载测试。

简而言之,您需要同时执行这两项操作以确保:

  1. 微服务在 SLA 内执行
  2. 各种微服务作为一个整体在 SLA 内执行。

  • 感谢您输入 Seth,我的声誉还不足以公开支持您的评论,但应该记录下来。与实现双方覆盖的想法非常相似。对我来说,唯一的问题是外部团队拥有的集成端点有时甚至与生产端点并不接近。因此,他们向您提供的信息可能会产生误导。 (3认同)