什么是 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测试数据要可重复生成并相互隔离:共享一套脏数据会让集成测试长期不稳定,团队最终不再信任测试结果。
性能冒烟的关键是与基线比对而非绝对值:只报一个数字无法判断是否退化,需保存历史基线并对比。