Skip to content
cccskills
FreePublished on GitHub

api-testing

测试后端接口时使用。适用于 REST/GraphQL/RPC 接口测试、契约验证、API 集成测试。融合契约测试、Postman/REST Assured、OpenAPI 校验。

The English summary is being prepared. Showing the original description.

See how to install

Files included (2)

  • SKILL.md6.9 KB
  • templates/api-test-template.md3.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

API 接口测试(API Testing)

参考来源:Pact 契约测试、Postman API Testing Best Practices、Stripe API Testing Approach、ISTQB Foundation。

适用场景

  • REST / GraphQL / RPC 接口测试
  • API 契约验证(前后端解耦)
  • 鉴权 / 权限矩阵测试
  • 错误码 / HTTP 状态码测试
  • 幂等 / 重试 / 并发测试
  • Webhook / 异步任务测试
  • 接口性能基线(与 performance-testing 协作)

核心原则

1. API 测试是金字塔的中间层
   比 E2E 快、比单元真实

2. 测契约不是测代码
   后端能改实现,但不能破契约

3. 主路径 + 失败路径 + 边界路径
   8 个标准维度(见下文)

4. OpenAPI 是真相源
   测试与契约自动校验

5. 测试数据隔离
   不同测试用例不互相污染

API 测试的 8 个标准维度(每个端点必测)

维度用例数示例
1. 成功路径1~3正常参数返回 200 + Schema
2. 参数校验失败多必填缺失 / 格式错 / 长度超 / 类型错
3. 认证失败1~2Token 缺失 / 过期 / 无效
4. 权限不足1~3无权限 / 越租户 / 越用户
5. 资源不存在1ID 不存在返回 404
6. 资源冲突1~2状态冲突 / 版本冲突 / 唯一约束
7. 限流1超出 QPS 返回 429 + Retry-After
8. 服务异常1模拟 500 时调用方处理

契约测试(Contract Testing)

传统集成测试:
  调用方 + 真实服务 → 快但脆弱

契约测试:
  调用方 ↔ 契约(OpenAPI)↔ 服务方
  双方各自验证契约,不依赖对方在线

工具:
  - Pact(消费者驱动)
  - Spring Cloud Contract
  - OpenAPI 校验器(如 Dredd)

测试金字塔的 API 层

     /\
    /E2\
   /----\
  / API  \  ← 这里:覆盖业务规则、错误处理、契约
 /--------\
/  单元   \

工作流程

1. 拿到 OpenAPI 契约(或 API 文档)
   ↓
2. 列端点清单
   ↓
3. 每个端点按 8 维度设计用例
   ↓
4. 准备测试数据(前置 + 隔离)
   ↓
5. 执行测试(Postman/REST Assured/Karate/pytest)
   ↓
6. 校验:
   - HTTP 状态码
   - 响应 Schema(与 OpenAPI 比对)
   - 响应字段值
   - 数据库副作用(写操作)
   - 异步副作用(消息 / Webhook)
   - 日志(trace_id / 错误日志)
   ↓
7. 失败 → bug-reporting
   ↓
8. 转回归用例

鉴权测试矩阵

对每个端点:

| 角色 | Token | 期望 |
|------|-------|------|
| guest | 无 | 401 |
| user | 自己资源 | 200 |
| user | 他人资源 | 403 或 404 |
| admin | 任意资源 | 200 |
| user | 跨租户 | 403 或 404 |
| user | Token 过期 | 401 |
| user | Token 篡改 | 401 |

幂等测试

对所有 POST 创建 / 支付 / 扣减 类接口:

1. 同一 Idempotency-Key 调用两次
   - 预期:第二次返回首次结果,不重复创建

2. 不同 Idempotency-Key 同样请求体
   - 预期:创建两次(业务允许时)或拒绝(唯一约束时)

3. 网络中断后重试
   - 预期:可重试,结果一致

4. 并发同 key
   - 预期:仅一次成功

失败路径用例标准库

通用失败用例(每个端点都要测):

✓ 必填字段缺失 → 400 + VALIDATION_ERROR
✓ 字段类型错 → 400 + INVALID_TYPE
✓ 字段长度超限 → 400 + LENGTH_OUT_OF_RANGE
✓ 字段值非法(枚举外)→ 400 + INVALID_ENUM
✓ JSON 格式错 → 400 + JSON_PARSE_ERROR
✓ Content-Type 错 → 415
✓ 超大 body → 413
✓ 未认证 → 401 + WWW-Authenticate
✓ 已认证但无权限 → 403
✓ 资源不存在 → 404
✓ 资源冲突 → 409
✓ 业务校验失败 → 422
✓ 限流 → 429 + Retry-After
✓ 服务异常 → 500

性能基线(与 performance-testing 协作)

对每个核心端点测:
  - P50 / P95 / P99 响应时间
  - 单实例 QPS
  - 错误率(对比基线)

工具:
  - k6 / wrk / Locust
  - Postman Runner(小规模)
  - Apache Bench(快速基线)

工具链

工具用途优势劣势
Postman / Apifox手工 / 半自动易上手、UI 友好大规模难管理
REST AssuredJava 自动化强类型、IDE 友好Java 栈限定
KarateDSL 自动化易读、内置 Mock学习曲线
pytest + requestsPython 自动化灵活、生态强需自建结构
Pact契约测试解耦消费者 / 服务流程复杂
DreddOpenAPI 校验自动比对契约灵活性差
Schemathesis属性测试自动生成 fuzz用例无业务感

常见 API Bug 类型

1. 字段大小写不一致(status vs Status)
2. 时间字段时区不统一
3. 金额字段精度丢失(float)
4. ID 字段精度问题(JSON number 超 2^53)
5. 必填判断不严(null vs 缺失 vs 空字符串)
6. 错误码不稳定(同错误返回不同 code)
7. 分页参数边界(page=0 / page=-1)
8. 排序字段未限制(任意字段都能排序,性能爆炸)
9. 批量接口无上限(10000 条一起)
10. 删除接口幂等性(第二次返回 404 应该 204)
11. 异步接口同步返回错误码(200 包错误)
12. CORS 预检 OPTIONS 错误
13. Content-Length 不一致
14. Header 大小写敏感
15. 字符编码(UTF-8 / GBK 混用)

质量自检

□ 每个端点 8 维度都覆盖
□ 鉴权矩阵完整测试
□ OpenAPI Schema 自动校验
□ 写接口有数据库副作用断言
□ 幂等测试覆盖所有写接口
□ 失败路径占比 ≥ 40%
□ 性能基线建立
□ 测试数据隔离
□ trace_id / request_id 验证
□ 与契约测试集成(如有)

常见坑

  1. 只测 200——50% Bug 在错误路径
  2. 不校验 Schema——字段类型变了没发现
  3. 不测越权——A 用户能访问 B 用户的资源
  4. 不测幂等——网络重试导致重复扣款
  5. 测试数据不隔离——并行执行就崩
  6. 不测限流——上线后被攻击才发现
  7. 不验数据库副作用——接口返 200 但数据没写
  8. 不测异步副作用——webhook / MQ 消息漏发
  9. Postman collection 不进版本控制——丢了重写
  10. 手工跑不集成 CI——回归断层

配套模板

  • templates/api-test-template.md — 单端点 8 维度测试 + 鉴权矩阵 + 幂等测试 + Schema 校验

与其他 skill 的协作

上游:
  API 设计工作流 → OpenAPI 契约
  test-case-design → 用例方法
  test-data-management → 测试数据

下游:
  bug-reporting → 失败时记录
  regression-testing → 入回归套件
  performance-testing → 基线建立
  自动化测试工作流 → 实现自动化

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

A/B 测试设计与分析时使用。适用于产品实验、功能验证、转化率优化。融合假设驱动 + 样本量计算 + 置信度判断。

The English summary is being prepared. Showing the original description.

zhaoxuya520/AI-Fullstack-Delivery-Workflow54Updated May 19, 2026

上线前业务方/产品方验收时使用。适用于功能交付确认、UAT、发布会签。融合 BDD Given-When-Then、Specification by Example、ATDD。

The English summary is being prepared. Showing the original description.

zhaoxuya520/AI-Fullstack-Delivery-Workflow54Updated May 19, 2026

设计无障碍可访问的界面时使用。适用于满足 WCAG 标准、键盘导航、屏幕阅读器支持。优先使用 WCAG 2.2 AA 级标准 + 键盘 + 焦点 + 对比度 + ARIA。

The English summary is being prepared. Showing the original description.

zhaoxuya520/AI-Fullstack-Delivery-Workflow54Updated May 19, 2026

实现可访问性(无障碍)时使用。覆盖 WCAG 2.2 AA / ARIA / 键盘导航 / 屏幕阅读器 / 颜色对比 / 焦点管理。融合 React Aria / Radix UI / Headless UI 实践 + axe-core 自动化测试。

The English summary is being prepared. Showing the original description.

zhaoxuya520/AI-Fullstack-Delivery-Workflow54Updated May 19, 2026

AI 模型部署时使用。适用于推理服务 / GPU / TensorRT / 监控 / 扩缩容。

The English summary is being prepared. Showing the original description.

zhaoxuya520/AI-Fullstack-Delivery-Workflow54Updated May 19, 2026

数据分析报告输出时使用。适用于业务分析报告、周报、专项分析、决策支持。融合洞察 + 建议 + 行动项。

The English summary is being prepared. Showing the original description.

zhaoxuya520/AI-Fullstack-Delivery-Workflow54Updated May 19, 2026

See all skills by zhaoxuya520

Report a problem with this skill