用途:把 API 制品(OpenAPI、GraphQL SDL、.proto、AsyncAPI、Arazzo、Webhook 定义)转化为可强制执行的检查,覆盖 lint、破坏性变更检测、可执行契约、负向/安全用例与发布门禁,防止不安全变更上线。
主要能力:建立各接口面的规范制品(REST 用 OpenAPI 3.1/3.2,GraphQL 用 SDL 加 schema registry,gRPC 用 .proto 加 buf.yaml,事件流用 AsyncAPI,多步流程用 Arazzo,Webhook 用 OpenAPI webhooks 或 AsyncAPI channels);用 Spectral、GraphQL Inspector、buf lint 校验制品;对基线分支做破坏性变更 diff;执行契约测试(CDC 用 Pact/PactFlow,schema 驱动用 Specmatic/Microcks,属性测试用 Schemathesis);补充认证、校验、错误契约、限流、Webhook 签名与重放、异步 DLQ 等负向与安全用例;定义 PR、发布、部署三阶段门禁(含 Pact can-i-deploy、buf breaking、GraphQL operations 检查)。
使用方式:先确定各接口面的唯一权威制品并消除漂移,lint 后再写测试;每个 PR 加破坏性变更检查;按需选择契约执行方式;用 scripts/ 下的脚本接入 CI,如 scripts/pact_can_i_deploy.sh、scripts/schemathesis_baseline.sh、scripts/buf_breaking_check.sh、scripts/spectral_lint.sh;模板见 assets/api-test-plan.md、assets/contract-change-checklist.md、assets/schema-validation-matrix.md。
适用场景:3 个以上独立消费方团队、第三方或公开消费方、生产与消费独立部署的异步/事件契约,以及破坏性变更可能先于人工发现到达生产的接口面。单一团队单消费方且已有端到端冒烟门禁时通常不必引入契约测试。
限制:契约测试通过不等于路由、认证、序列化配置、部署记录或目标环境异步消费方正确;can-i-deploy 依赖真实部署记录;需防范消费方期望基于 mock 固定数据、provider state 漂移等常见失效;AI 仅用于起草候选用例,确定性门禁仍是唯一事实来源;具体工具价格与当前行为暂未提供。