本文へ移動
cccskills
無料GitHub で公開

api-testing

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

インストール方法を見る

含まれるファイル(2)

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

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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 → 基线建立
  自动化测试工作流 → 实现自动化

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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

日本語の概要は準備中です。原文の説明を表示しています。

zhaoxuya520/AI-Fullstack-Delivery-Workflow532026年5月19日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

zhaoxuya520/AI-Fullstack-Delivery-Workflow532026年5月19日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

zhaoxuya520/AI-Fullstack-Delivery-Workflow532026年5月19日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

zhaoxuya520/AI-Fullstack-Delivery-Workflow532026年5月19日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

zhaoxuya520/AI-Fullstack-Delivery-Workflow532026年5月19日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

zhaoxuya520/AI-Fullstack-Delivery-Workflow532026年5月19日 更新

zhaoxuya520 のスキルをすべて見る

このスキルの問題を報告する