⚡

合同测试设计Skill contract-test-design

本技能专注于合同测试设计,用于制定消费者驱动的合同测试策略,使用Pact框架验证API合同,管理API演化,并集成到CI/CD流程中。关键词包括合同测试、Pact、消费者驱动、API验证、微服务测试、破坏性更改检测。

测试 0 次安装 10 次浏览 更新于 3/11/2026
名称 contract-test-design
描述 使用Pact设计消费者驱动的合同测试策略,验证提供者合同,并通过合同优先方法管理API演化。 allowed-tools: Read, Write, Glob, Grep, Task, WebSearch, WebFetch

合同测试设计

何时使用此技能

在以下情况下使用此技能:

  • 合同测试设计任务 - 使用Pact处理消费者驱动的合同测试策略
  • 规划或设计 - 需要合同测试方法的指导
  • 最佳实践 - 希望遵循既定模式和标准

概述

合同测试通过测试消费者和提供者之间的合同(API协议)来验证服务是否正确通信。消费者驱动的合同(CDC)确保提供者不会破坏其消费者。


合同测试与其他测试类型的比较

方面 端到端测试 集成测试 合同测试
范围 完整系统 组件 + 依赖 消费者-提供者
速度 慢(分钟) 中(秒) 快(毫秒)
可靠性 经常不稳定 中等 非常稳定
部署耦合 高 中等 低(异步)
故障定位 差 中等 优秀
维护 高 中等 低

消费者驱动合同流程

┌─────────────────────────────────────────────────────────────┐
│                    消费者端                                  │
│                                                             │
│  1. 消费者编写测试   2. 测试生成合同                       │
│     ┌──────────────┐          ┌──────────────┐              │
│     │ 消费者       │          │   合同       │              │
│     │ 测试         │  ─────►  │   (JSON)   │              │
│     └──────────────┘          └──────────────┘              │
│                                      │                      │
└──────────────────────────────────────┼──────────────────────┘
                                       │
                                       ▼ 发布到经纪人
                              ┌──────────────────┐
                              │  合同经纪人      │
                              │  (Pact Broker) │
                              └────────┬─────────┘
                                       │
┌──────────────────────────────────────┼──────────────────────┐
│                    提供者端          │                      │
│                                      ▼                      │
│  3. 提供者验证合同                                            │
│     ┌──────────────┐          ┌──────────────┐              │
│     │  提供者      │  ◄─────  │   合同       │              │
│     │  验证        │          │   (JSON)   │              │
│     └──────────────┘          └──────────────┘              │
│            │                                                │
│            ▼                                                │
│  4. 提供者测试通过 = 合同被遵守                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

快速参考:破坏性更改

更改类型 是否破坏? 行动
移除字段 是 阻止部署
更改字段类型 是 阻止部署
添加必需字段 是 阻止部署
添加可选字段 否 允许
添加新端点 否 允许

工具选择

用途 工具 理由
合同框架 PactNet .NET原生,成熟
经纪人 Pact Broker 标准,免费层
异步合同 Pact Message 相同生态系统
模式验证 OpenAPI 行业标准

参考

参考 内容 何时加载
strategy-template.md 合同测试策略模板、服务地图、工作流 规划合同测试策略
pact-dotnet-implementation.md 消费者测试、提供者验证、提供者状态 在.NET中实现Pact
message-contracts.md 异步消息/事件合同测试 测试事件驱动架构
matchers-cicd.md Pact匹配器、破坏性更改检测、CI/CD管道 匹配器语法、CI/CD集成

集成点

来自的输入:

  • API规范 → 合同定义
  • 服务架构 → 消费者-提供者地图
  • test-strategy-planning技能 → 合同测试范围

输出到:

  • CI/CD管道 → 合同验证门控
  • API治理 → 破坏性更改检测
  • api-design-fundamentals技能 → 合同优先设计

测试场景

场景1:规划合同测试策略

查询: “帮助我设计微服务的合同测试策略”

预期: 技能激活,提供策略模板,指导服务地图绘制

场景2:实现Pact测试

查询: “展示如何在.NET中编写Pact消费者测试”

预期: 技能激活,加载pact-dotnet-implementation.md参考,提供代码示例

场景3:CI/CD集成

查询: “如何将合同测试集成到GitHub Actions管道中?”

预期: 技能激活,加载matchers-cicd.md参考,提供管道示例


最后更新: 2025年12月28日

版本历史

  • v1.1.0 (2025-12-28):重构为渐进式披露 - 提取实现到references/
  • v1.0.0 (2025-12-26):初始发布