小麦带你学设计模式六

简介: 设计模式学习

消费端驱动的契约测试

在微服务架构中,通常有许多有不同团队开发的微服务。这些微型服务协同工作来满足业务需求(例如,客户请求),并相互进行同步或异步通信。消费端微服务的集成测试具有挑战性,通常用 TestDouble 以获得更快、更低成本的测试运行。但是 TestDouble 通常并不能代表真正的微服务提供者,而且如果微服务提供者更改了它的 API 或 消息,那么 TestDouble 将无法确认这些。另一种选择是进行端到端测试,尽管它在生产之前是强制性的,但却是脆弱的、缓慢的、昂贵的且不能替代集成测试(Test Pyramid)。

在这方面消费端驱动的契约测试可以帮助我们。在这里,负责消费端微服务的团队针对特定的服务端微服务,编写一套包含了其请求和预期响应(同步)或消息(异步)的测试套件,这些测试套件称为显式的约定。对于微服务服务端,将其消费端所有约定的测试套件都添加到其自动化测试中。当特定服务端微服务的自动化测试执行时,它将一起运行自己的测试和约定的测试并进行验证。通过这种方式,契约测试可以自动的帮助维护微服务通信的完整性。

优点

  • 如果提供程序意外更改 API 或消息,可以被快速的自动发现
  • 更少意外、更健壮,特别是包含大量微服务的企业应用程序
  • 改善团队自主性

缺点

  • 需要额外的工作来开发和集成微服务服务端的契约测试,因为他们可能使用完全不同的测试工具
  • 如果契约测试与真实服务情况不匹配,将可能导致生产故障

何时使用需求驱动的契约测试

  • 在大型企业业务应用程序中,通常由不同的团队开发不同服务

何时不宜使用消费端驱动的契约测试

  • 所有微服务由同一团队负责开发的小型简单的应用程序
  • 如果服务端微服务是相对稳定的,并且不处在活跃的开发状态
相关文章
|
存储 设计模式 NoSQL
|
设计模式 存储 负载均衡
|
存储 设计模式 前端开发
|
存储 设计模式 SQL
|
存储 设计模式 SQL
|
设计模式 存储 SQL
|
18天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
19 0
|
1月前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
37 0
|
2月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
14天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式