API Schema 校验是将已有请求和响应样例与指定接口契约对照。判断结果取决于 schema 方言、接口操作、方向和引用上下文;无法解析的契约不能算作通过。

先确定方言和接口操作

记录契约属于 OpenAPI、JSON Schema 还是 GraphQL,以及具体版本或 dialect;同时确认 operation、请求或响应方向、内容类型、引用根和解析上下文。依赖版本的规则或引用无法确认时,应保留为待判断。

分开判断缺失、null 与受约束的值

将每个样例与实际 schema 对照,不要把外观相似的输入当成同一种情况。

样例情况核对内容
属性缺失在当前操作和 schema 分支中是否必填
属性值为 null该方言和类型声明是否允许 null
类型或范围不符适用类型、边界和 schema 路径
格式或枚举值声明的格式、校验器支持情况和允许的枚举值
未知属性schema 的 additionalProperties 规则
组合 schema 或引用引用是否解析、适用分支及方言规则

GraphQL 应使用输入/输出类型和非空规则,不能套用 JSON Schema 关键词。可选字段不必然接受 null,声明默认值也不代表系统会自动填入。

报告样例判定,不推断覆盖率

对每个已有样例记录 schema 路径和关键词、可用的校验器或报告证据,以及它依据该契约属于有效、无效还是无法评估。未解析的引用和缺少的样例都要保留。少量样例可以暴露不匹配,但不能证明完整契约或运行时行为。

不把结构校验扩展成其他结论

Schema 校验处理声明的结构与约束,不能单独证明业务规则、授权或所有已部署客户端的兼容性。涉及客户端与服务端版本行为时,使用 API 版本兼容性测试。

记录 ASV-## 发现

记录对象、前置条件、关注行为、schema 来源路径、证据状态、影响与优先级、责任角色、关闭条件和验证方法。事实、证据支持的推断、候选检查和 Human 决策要分开。

准备有边界的复核

将已有 schema、样例和校验报告作为设计或静态比对材料。不要执行测试、修改 schema 或代码、假设缺失的规则或版本,也不要把样例数量说成覆盖率。

相关 Skill

安装与调用

安装这个 Skill:

npx skills add https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-types/api-schema-validation -g

调用 api-schema-validation 时,提供契约方言和版本、operation、方向、内容类型、引用根、现有样例及可用的校验器证据。

源文件

阅读API Schema 校验 Prompt。其中定义 ASV-## 发现合同,以及样例×约束的判定边界。

分享