Redian新闻
>
eBay和Lastminute采用契约测试来驱动架构演进

eBay和Lastminute采用契约测试来驱动架构演进

公众号新闻

作者 | Rafal Gancarz
译者 | 明知山
策划 | Tina

lastminute.com 采用契约测试来降低系统级集成测试所带来的复杂性,并改进反馈周期和开发过程。eBay 也采用契约测试来帮助其内部进行 API 演化,并为客户端团队提供支持。

在分布式系统(如微服务架构)中,应用程序服务使用 RPC(远程过程调用)风格的请求或异步消息进行交互。测试这类系统的常用方法是使用系统测试(端到端集成测试),这通常需要将整个系统部署在测试环境中。

lastminute.com 的软件工程师 Ivan Dell'Oro 指出集成 / 系统测试所带来的挑战:

在过去,我们通过集成测试来验证两个微服务之间的消息交换,由于多种原因会导致测试失败。为避免阻碍开发过程,我们选择忽略这些测试。结果是它们被忽视了好几个月,当一边的系统发生变化,两边的 CI 管道却都是绿色的:通常,当生产环境中出现了故障,应该是契约出现了错误。

eBay 团队也表示:

对于 eBay 的通知平台团队来说,我们面临的另一个挑战是,我们的 API 被许多领域团队调用。在演进服务 API 的同时保持与所有消费者端的兼容性是我们的一个基本原则。

这两个团队都一直在寻找能够让测试变得不那么脆弱和更快速的方法,目标是改善开发人员 / 测试人员的体验,缩短反馈周期,加快价值交付的速度,同时支持内部契约的演进,例如 API 规范和消息 schema。

最后,经过一些研究和实验,他们采用契约测试作为验证服务间交互正确性的主要方法。lastminute.com 发现,这给他们的微服务架构和交付过程带来了积极的影响,与标准的系统级测试相比,测试执行时间大大缩短了。eBay 使用契约测试来验证其平台中的集成点,支持通过写作来确保内部 API 可以在不出现不兼容问题的情况下演进。

lastminute.com 已经使用 Pact(一个客户端驱动的契约测试工具)对微服务之间的 RPC 交互进行了契约测试,并在随后将其扩展到服务间的异步交互(通过 RabbitMQ 代理交换消息)上。

图片来源:https://technology.lastminute.com/contract-testing-asynchronous-messaging-pact-junit-mockk/

eBay 的团队研究了基于 OpenAPI 规范的 API 定义语义版本控制,但得出的结论是,版本控制本身不足以解决系统测试的脆弱性。他们将 BDD(行为驱动开发)视为描述 API 消费者需求的一种方式,生产者和消费者团队协作编写所有需求并使其可执行。事实证明,在采用这种方法时,API 提供方需要在客户需求发生变化时捕获和更新客户需求,而这已被证明是有问题的。

最后,他们发现了契约测试,生产者和消费者团队可以在他们的测试用例中使用 Mock(或存根)来独立地维护测试套件。

他们对 Spring Cloud Contract 和 Pact 进行了评估,最终选择了后者,因为后者可以更直接地使用 schema,并有更好的跨团队交互支持。他们对 Spring Cloud Contract 和 Pact 进行了评估,最终选择了后者,因为后者可以更直接地使用 schema,并有更好的跨团队交互支持。他们对 Pactflow(一款商业版 Pact 产品)和内部 CI/CD 工具进行了无缝集成,并创建了一个专门的开发者门户,用于配置新的契约测试。

图片来源:https://tech.ebayinc.com/engineering/api-evolution-with-confidence-a-case-study-of-contract-testing-adoption-at-ebay/

Dell'Oro 强调,契约测试本身并不能完全替代系统级集成测试。契约测试旨在验证服务之间数据交换的正确性,但服务级集成测试会同时执行业务逻辑和错误处理,确保整个流程 / 数据流的正确性和弹性。

原文链接:

https://www.infoq.com/news/2023/05/ebay-contract-testing-evolution/

声明:本文由 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

向量数据库?不要投资!不要投资!不要投资!

年薪60万的数据分析师工作保不住了?!阿里达摩院研究发现,改用GPT-4成本只需几千元

先别急着“用Rust重写”,可能没有说的那么安全

连代码都没写就敢要融资:被ChatGPT带火的向量数据库,带来了一大波造富神话

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM…你都掌握了吗?一文总结情感分析必备经典模型(一)基于OpenTelemetry和Jaeger的Go语言链路追踪最佳实践InfoQ 2023 年趋势报告:事件驱动架构、深度学习和人工智能、云原生架构和容器化技术道人笔记(四)敬长辈谨遵孝悌义,怜家贫常受百家恩华为MatePad 2023发布,Mate60系列要上灵动岛;iPhone 15系列将采用混合镜头[干货] 一张图让你明白 cut, cut off, cut up 的区别~微软关玮雅:每个应用程序都可以由 AI 来驱动 | 中国AIGC产业峰会ThoughtWorks CTO:2025 年之前,我们会看到架构的演进,但不会看到革命2023武汉4号线柏(bǎi)林电影周 | 征片开启 | 选片组成员公布AMD:最新架构锐龙 7000 移动处理器采用橙色贴纸[评测]CoolerMaster MasterAir MA824 Stealth 评测Deal速报 | RebatesMe新用户奖励 + Postmates各种折扣在硅谷,就别总喝大连锁咖啡啦!不如试试来自越南的咖啡——七叶咖啡活动招募丨“加速企业可持续转型”——联合国全球契约组织分享交流会Tipping Livestreamers ‘Out of Control’: China State BroadcasterRedis 架构演化之路如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io+直接ioTUXEDO Stellaris 16(Gen5)是目前所能找到的终极 Linux 笔记本电脑 | Linux 中国Mckinney和Las Colinas将迎来豪华车库公寓新概念稻盛和夫大师营回顾:跳出传统契约视角,对职场晋升有何帮助考试来了,高分作文需要的12个技巧物理学大神,赌股市破3000点,输了50万,还惹了官司!网友:愿赌服输,要有契约精神!武大+上交提出 BatGPT:创新性采用双向自回归架构,可预测前后token使用 GoogleTest 和 CTest 进行单元测试 | Linux 中国道人笔记(五)读书时光去匆匆,小事之中悟因果7种不同的架构演进思路与落地难点解析|QCon广州道人笔记(六)中学生涯孤身思双亲,偶遇奇事有幸种道因Agustín Hernández:中美洲建筑背景下的未来主义巨构恐怖的白蚁!想给房客涨房租了……Westminster School 威斯敏斯特学院MemNet、AT-LSTM、IAN、AF-LSTM…你都掌握了吗?一文总结情感分析必备经典模型(二)ArchGuard Co-mate:一次关于大语言模型与架构治理、架构设计的探索最新ReWOO框架直指Auto-GPT和LangChain代理的冗杂性,提出轻量级LLM与工具的交互范式道人笔记(七)情切切郎舅送温暖 念长长少年叹世艰母亲节三天倒计时!Last Minute送礼指南收好!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。