api-tester

Featured

依据真实 OpenAPI、路由实现和现有测试生成并验证 API 测试。用于用户要求测试接口、补集成测试、验证 API 契约、生成回归用例或排查接口兼容性时;区分“生成测试”和“执行请求”的授权,不猜测状态码、响应结构或 SLA,不在未确认环境中发送写请求。

AI & Automation 692 stars 69 forks Updated today MIT

Install

View on GitHub

Quality Score: 92/100

Stars 20%
95
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# API 测试助手 ## 核心原则 - 只把可核验的 OpenAPI、代码、类型、调用方或现有测试当作契约证据。 - 生成测试不等于执行测试;读取接口定义不等于可以访问真实服务。 - 保护现有数据、凭据和用户修改,优先使用隔离且可清理的测试环境。 ## 工作流程 ### 1. 读取项目与接口证据 先读取适用的仓库规则、测试说明、Git 状态和项目脚本,再按实际存在情况检查: - OpenAPI / Swagger 文件及其引用的 Schema。 - 路由、controller、handler、DTO、验证器和错误处理中间件。 - 客户端类型、调用方、公开文档和现有 API 测试。 - 测试配置、fixture、认证方式、环境变量模板和数据清理机制。 记录规范、实现与现有测试之间的不一致。无法确定哪个行为才是期望契约时,列出证据并请求确认,不用新测试固化猜测。 ### 2. 建立契约矩阵 为目标 endpoint 记录: | 项目 | 证据 | |------|------| | method 与 path | OpenAPI 或路由位置 | | 认证与权限 | security scheme、中间件或调用方 | | 请求参数与约束 | Schema、DTO 或验证器 | | 已声明响应 | 状态码、响应结构与 header | | 副作用与幂等性 | 实现、文档或调用链 | | 测试环境与清理 | fixture、事务或 teardown | 不要默认每个接口都应返回 `400`、`401`、`403`、`404`、`422` 或 `500`。只有契约已声明或代码路径真实可达时才生成对应断言。 ### 3. 明确环境与授权 在执行任何请求前确认: - Base URL、环境归属以及是否为 local、test、staging 或 production。 - 测试账号、权限范围和凭据来源。 - 是否允许执行 POST、PUT、PATCH、DELETE、上传、支付、通知等有副作用操作。 - 测试数据隔离、唯一标识、清理或事务回滚方案。 用户只要求“生成测试”时只产出代码。生产环境、共享 staging、第三方服务及任何可能改变真实数据的执行都必须获得明确授权。GET 也不能仅凭 method 判定无副作用。 ### 4. 选择项目锁定的工具 - 优先运行仓库已有的 test、OpenAPI lint 或 contract test script。 - 读取 package manager、lockfile 和已安装版本后再选择命令。 - 不用裸 `npx`、全局工具或临时下载的最新版解析规范。 - 缺少依赖时先报告;安装工具、更新 lockfile 或修改测试配置需要单独授权。 - 使用真正的 YAML / JSON / OpenAPI 解析器,不用 `grep` 推断嵌套 Schema。 ### 5. 设计有依据的用例 按目标契约选择必要场景: - 成功路径:使用最小合法输入验证状态、结构和关键语义。 - 边界路径:只测试 Schema 或实现中真实存在的长度、范围、枚举、格式和必填约束。 - 认证与权限:只覆盖已声明的身份、角色和资源归属规则。 - 失败与回归:覆盖可达错误路径、已知缺陷或兼容性要求。 - 幂等、分页、并发、重试与超时:仅在接口契约包含这些语义时测试。 断言外部可观察行为,避免绑定内部函数调用。随机数据应固定 seed,并避免真实个人信息、客户数据和生产标识。 ### 6. 实现最小测...

Details

Author
laolaoshiren
Repository
laolaoshiren/claude-code-skills-zh
Created
3 months ago
Last Updated
today
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category