Contract Testing
契约测试
契约测试会检查两个可分开部署的系统,是否仍按照双方约定的格式交换消息。
另一个例子
客户端预期 GET /profiles/42 会返回特定字段和状态。持续集成(CI)会检查服务提供方是否遵守约定;这项测试不能证明完整流程或生产环境的数据质量。
主要部分
- 01消费者契约
- 02提供者验证
- 03兼容性结果
什么时候用
服务可以各自部署,而且要在不启动整套系统的情况下检查消息兼容性时,可以使用这个词。
什么时候不要用
不要让契约照搬服务提供方的内部代码,也不要用契约测试代替 API 安全测试。
代码里的名称
consumer expectation ↔ provider verification 上线前要检查
检查环境与预先准备的测试数据。定义看得到的预期结果、失败与边界案例。也要定义隔离方式、固定输入、排错信息与清理流程。设置执行时间预算、负责人及不稳定测试的处理规则。
预期结果:用 契约测试 (Contract Testing) 收集可重复验证这项行为或质量风险的证据。 用户场景:客户端预期 GET /profiles/42 会返回特定字段和状态。持续集成(CI)会检查服务提供方是否遵守约定;这项测试不能证明完整流程或生产环境的数据质量。 验证方式:契约测试 (Contract Testing)。 适用理由:服务可以各自部署,而且要在不启动整套系统的情况下检查消息兼容性时,可以使用这个词。 不应使用的情况:不要让契约照搬服务提供方的内部代码,也不要用契约测试代替 API 安全测试。 测试要求:说明要测的系统与环境。定义预先准备的测试数据(Fixture)、其他输入,以及看得到的预期结果。加入预期失败、边界案例、容差、隔离方式及清理流程。 测试维护:让失败原因容易查找,并控制随机或会变化的输入。指定负责人。测试速度与维护成本要符合发布前检查的需要。 验收标准:已知缺陷存在时测试会失败,修复后通过。测试能在目标环境重复执行,提供可采取行动的证据,且不泄露或改动无关数据。 证据与限制(证据边界):它只代表该来源的官方说法。其他平台或团队可能有不同用法。 待确认:发布前必过的检查、环境、测试数据、容差、执行时间预算、负责人,以及不稳定测试的处理规则。
检查这份需求
请 AI 编程助手检查当前如何使用 契约测试 (Contract Testing)。 定义:契约测试会检查两个可分开部署的系统,是否仍按照双方约定的格式交换消息。 生产环境检查:检查环境与预先准备的测试数据。定义看得到的预期结果、失败与边界案例。也要定义隔离方式、固定输入、排错信息与清理流程。设置执行时间预算、负责人及不稳定测试的处理规则。 修改程序前,先列出看到的证据、缺口、严重程度,以及最小且安全的修正。