OpenAPI 契约校验是什么
以 OpenAPI 文档为契约做双向校验:校验实现与文档一致(Schemathesis、Dredd 类工具),同时用文档生成用例。文档与实现漂移时应让测试直接失败而不是默默放过;把契约校验放进 CI,文档更新与实现变更同批验证,漂移当天暴露。
基本信息
| 契约来源 | OpenAPI 文档(YAML 或 JSON) |
|---|---|
| 校验方向 | 实现是否符合文档;文档是否及时更新 |
| 工具生态 | Schemathesis(属性式)、Dredd(逐端点回放) |
| 用例生成 | 由文档生成合法请求与边界附近的非法请求 |
| 执行时机 | CI 常规执行,与接口变更同批验证 |
| 失败处理 | 以契约不一致为测试失败,附差异详情 |
| 生成器配置 | 限定示例与深度,避免请求洪泛误报 |
工具示意
工具示意
# 用 OpenAPI 文档生成并执行用例(示意):
schemathesis run https://api.example.com/openapi.json
# Dredd:按文档逐端点回放验证实现一致性:
dredd openapi.yml https://api.example.com
# 文档更新与实现变更应同批进入 CI典型使用场景
- 新接口交付:文档先行,用例自动生成覆盖基础路径。
- 版本升级:接口变更时先校验契约一致。
- 回归防线:契约校验作为接口测试的固定一环。
- 连通检查:按文档生成的请求验证实现可达性。
- 前后端协作:前端按文档开发,后端按文档验证。
- 迁移验证:网关或框架迁移后核对行为保持一致。
- 接口模糊:文档驱动生成边界与畸形请求,暴露校验缺口。
- 鉴权准备:为需要认证的端点配置测试账号与令牌。
文档与实现不符时以文档为准断言,容易把实现缺陷判成用例问题:先确认哪边为准。
只在发布前校验一次不够,版本演进中契约会静默漂移。
文档质量决定生成用例质量:把文档评审纳入接口评审流程。
差异报告要能定位到端点与字段级别,修复才有抓手。