performance-testing - 使用外部依赖项进行性能测试
问题描述
在微服务世界中进行性能测试(主要谈论负载测试)时,您的应用程序依赖的外部依赖项 (API) 的方法是什么,但不由您的团队拥有/控制。在我的情况下,外部依赖项由同一公司内的团队拥有。那么您会指向相应的“真实”集成非产品端点,还是创建存根并模仿它们的响应时间以尽可能匹配生产?
- 第一种方法示例:您的团队拥有的后端 api 并调用外部 api 来验证客户。您的团队无法控制客户 API,但在运行负载测试时您仍然指向他们的集成测试端点。
- 第二种方法示例:您的团队拥有的后端 api 调用发送静态响应并模仿外部客户 api 的响应时间的存根。
我意识到这两种方法各有利弊,根据测试的目标,一种方法会优于另一种方法。但是你最喜欢的是什么?不一定是上述两者之间的选择。可以是完全不同的。
解决方案
识别被测系统(或应用程序)很重要。如果您只测量您自己的微服务的性能,那么您可以考虑将存根作为一种选择。
但是,通常进行性能测试以评估整个系统的性能。目的通常是模拟实际使用中的延迟。稍微准确地对此建模的唯一方法是不存根并使用“真实”集成端点。这种方法具有额外的优势,因为它可以帮助您识别潜在的系统性能瓶颈,例如微服务之间的链式同步调用(服务 A 调用 B,B 调用 C,C 调用 D 等)。这些测试也可以重复用于负载测试。
简而言之,您需要同时做这两件事以确保:
- 微服务在 SLA 内执行
- 各种微服务作为一个整体在 SLA 内执行。
推荐阅读
- arcore - 使用增强图像跟踪启动 AR 体验然后传递到平面跟踪的方式
- ubuntu - Ubuntu:valgrind:无法为平台“amd64-linux”启动工具“memcheck”:没有这样的文件或目录
- tuples - 在元组 Erlang 中添加单个元素
- matlab - 图像处理中的对比度拉伸变换
- python - 如何获取 div 标签的内容?
- bash - 如何使用密码管理器向 git push/pull 提供个人访问令牌
- node.js - 节点快递请求队列长度
- vaadin - 为什么当我使用 vaadin 选择数据在删除后仍然可见但如果我使用简单选择,数据从 UI 中正确删除
- sonarqube - 在扫描期间跳过 SonarQube 传感器
- angular - 在 socket.io-client 中调用 IO 时出错,角度 8