CDC - 介绍及工具

随着Microservices的流行,把系统拆分成一个个服务,服务之间会有很多依赖关系,但是每个之间又是相互独立的。当一个服务修改时,怎么保证其它调用它的服务没有受到影响呢?

CDC

契约测试 ,又称之为 消费者驱动的契约测试(Consumer-Driven Contracts,简称CDC),根据 消费者驱动契约 ,我们可以将服务分为消费者端和生产者端,而消费者驱动的契约测试的核心思想在于是从消费者业务实现的角度出发,由消费者自己会定义需要的数据格式以及交互细节,并驱动生成一份契约文件。然后生产者根据契约文件来实现自己的逻辑,并在持续集成环境中验证。

  • 单元测试 单元测试针对代码单元(通常是类)的测试,单元测试的价值在于能提供最快的反馈。另外好的单元测试还可以帮助你改善设计,在你的团队掌握TDD的前提下,单元测试能辅助重构,帮助改善代码整洁度。
  • API测试 API测试是针对业务接口进行的测试,主要测内部接口功能实现是否完整,比如说内部逻辑是不是正常,异常处理是不是正确。
  • 契约测试 契约测试其实是为了测试服务之间连接或者说接口调用的正确性,为了验证服务提供者的功能是不是真正能够满足消费者的需求。它其实体现了测试前移的思想,把本来要通过集成测试才能验证的工作化作单元测试和接口测试,用更轻量的方式快速进行验证。
  • 集成测试 它从用户的角度验证整个功能的正确性,测的是端到端的流程,并且加入用户场景和数据,验证整个过程是不是OK,它的价值业务价值最高,是验证一个完整的流程。

Pact

Pact 提供API支持CDC Testing,在Consumer端提供Mock服务秋模拟Provider并生成Contract信息,在Provider端使用生成的Contract信息来验证Provider的服务。
Pact工作流程 how pact works

Consumer

  1. 使用Pact的DSL,定义Mock服务。
  2. 使用Pact的DSL,定义响应内容(包括Headers、Status以及Body等)。
  3. 使用@PactVerification运行单元测试,生成契约文件(可以将其保存在文件系统或者Pact-Broker)。

    Provider

  4. 指定契约文件的存储源(如文件系统或者Pact-Broker)。
  5. 启动Provider,运行PactVerify(e.g., mvn pact:verify)。
唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!