Skip to content

接口文档与契约测试

说明

接口文档是团队协作的约定,契约测试用于验证接口实现是否符合文档定义,常用 OpenAPI 或 Pact。

面试怎么问

你们项目怎么维护接口文档?

使用 OpenAPI(Swagger)规范定义接口文档,包含:接口路径、请求方法、参数定义、响应结构、错误码。

文档管理方式:代码注解自动生成(保持同步)、独立文档仓库(集中管理)、文档平台(支持在线测试)。

关键是文档与代码同步更新,避免文档过时。

接口变更时怎么保证文档和实现一致?

建立变更管控流程:接口变更先更新文档评审、文档通过后同步开发、开发完成后做契约测试验证。契约测试在 CI 中执行:对比文档定义和实际响应,发现不一致自动报警。还要建立接口版本管理机制,兼容性变更升级小版本,破坏性变更升级大版本。

契约测试是什么,怎么用?

契约测试验证接口提供者和消费者是否符合约定的接口规范。

分为两种:提供者契约测试验证服务端是否符合文档定义。消费者契约测试验证客户端是否能正确处理服务端响应。

工具选择:OpenAPI Validator 用于 REST API,Pact 用于微服务契约测试。

契约测试是接口治理的重要手段。

项目里怎么用

  • 用 OpenAPI 或 Swagger 定义接口规范,作为开发和测试的共同参考。
  • 在 CI 中做契约测试,拦截不兼容变更,保证文档和实现一致。
  • 文档变更时同步更新测试用例和接口断言,避免测试覆盖遗漏。
  • 使用文档生成测试用例骨架,提高测试编写效率。
  • 建立接口变更通知机制,影响范围可控。

容易答错什么

文档和实现脱节,维护成本高

文档脱节的表现:接口参数变了文档没更新、错误码新增了没记录、响应结构与文档不符。

解决方案:代码注解自动生成文档、契约测试发现不一致、变更流程强制更新文档。

文档准确性直接影响前后端协作效率和测试效率。

不会讲契约测试和功能测试的区别

契约测试关注接口结构是否符合约定,功能测试关注业务逻辑是否正确。

契约测试验证:字段是否存在、类型是否正确、必填是否生效。

功能测试验证:业务规则、边界条件、异常处理。

两者互补,契约测试是功能测试的前提——接口结构都不对,功能测试无法进行。

忽略接口版本管理和兼容性策略

接口变更会影响所有调用方,要有版本管理策略:URL 路径版本化(/v1/api)、请求头版本化、向后兼容原则(新增字段可选、删除字段需要过渡期)。破坏性变更要提前通知、灰度发布、监控影响。版本管理是接口治理的核心能力。