定义

契约测试(Contract Testing)是一种用于微服务或前后端分离系统中的测试方式,主要目的是确保服务提供方(Provider)和服务调用方(Consumer)之间的接口“契约”始终保持一致、不会被意外破坏。

Consumer 定义“我需要什么样的 API”,Provider 承诺“我提供的 API 符合你的要求”,并通过测试自动验证双方是否匹配。

契约测试就是为了解决接口不一致、沟通不清导致的问题。

how

Consumer Contract(消费者契约)

由消费者写下“我调用这个 API 时,我需要的数据结构是什么”。

Provider Verification(服务提供方验证)

Provider 必须验证自己返回的数据结构与消费者要求一致。如果不一致,则无法上线,防止破坏接口。

常用tools

Pact(最流行)

Spring Cloud Contract(Java/微服务中常用)

Hoverfly(API 模拟)

契约测试的特殊点是 双方共同维护,不需要全部服务都跑起来。