API 测试策略

按层组织:模式校验与单测、契约测试、集成测试(真实依赖)、端到端与性能冒烟;每层覆盖不同失败模式,避免把全部验证压在最慢的一层。

什么是 API 测试策略

API 测试按层组织:模式与单元测试验证字段约束与分支逻辑,契约测试锁定提供方与消费方约定,集成测试走真实数据库与中间件,端到端测试覆盖核心业务旅程,性能冒烟则在发布前确认关键路径的延迟与吞吐没有退化。分层的目的是让不同失败模式在最便宜的一层被捕获。

基本信息

层级构成模式与单测、契约、集成、端到端、性能冒烟
执行时机单测随提交、契约在合并前、集成按需、端到端发布前
测试数据可重复生成且相互隔离,避免依赖共享脏数据
必备能力环境可编程(容器化依赖)、失败留档、用例稳定度跟踪

层级与验证目标

层级验证目标运行时机
模式与单测字段约束、状态分支、边界值每次提交
契约测试提供方与消费方约定流水线合并前
集成测试真实数据库与中间件交互流水线或每日
端到端核心业务旅程贯通发布前
性能冒烟关键接口延迟与吞吐基线发布前或每日

典型使用场景

  • 新接口开发:先用模式校验保证请求响应结构与规范一致
  • 接口变更:契约测试在合并前拦截破坏性改动
  • 数据依赖验证:集成测试覆盖事务、索引与并发场景
  • 回归保护:核心旅程用少量端到端用例兜底,避免全流程手工验证
  • 版本兼容:多版本接口并行时,用对照测试确认老版本行为不变
  • 容量评估前置:性能冒烟在发布前暴露明显退化

分层执行与数据隔离

分层执行与数据隔离
# 1) 模式与单测:最快反馈,随提交执行
pytest -m schema -q                       # 字段约束与分支逻辑
# 2) 契约测试:合并前拦截不兼容变更
pytest -m contract -q
# 3) 集成测试:用容器启动真实依赖,数据每次重建
docker compose up -d db redis && pytest -m integration -q
# 4) 端到端:只跑核心旅程,用例数量受控
pytest -m e2e -q --maxfail=1
# 5) 性能冒烟:与基线比对,超阈值即失败
k6 run --out json=smoke.json perf/smoke.js
测试数据要可重复生成并相互隔离:共享一套脏数据会让集成测试长期不稳定,团队最终不再信任测试结果。
性能冒烟的关键是与基线比对而非绝对值:只报一个数字无法判断是否退化,需保存历史基线并对比。

易错点

  • 只做端到端测试,反馈慢且失败原因难以定位
  • 测试依赖共享环境的脏数据,结果时好时坏,团队逐渐忽略失败
  • 契约测试缺失,提供方改动到联调阶段才被发现,返工成本高
  • 只验证正常路径,边界值、错误码与限流响应无人覆盖

数据来源与参考

  • 《Building Microservices(第 2 版)》(Newman)
  • 《Testing Web APIs》(Winters)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌