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

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

测试 0 次安装 0 次浏览 更新于 3/11/2026

name: contract-test-design description: 使用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):初始发布