API测试分析文档生成器
name: api-test-create
by blackbat1988 · published 2026-04-01
$ claw add gh:blackbat1988/blackbat1988-apitestcreate---
name: api-test-create
description: 当用户需要根据接口规格生成API测试分析文档时使用此技能。接受OpenAPI/Swagger文档、简化接口定义或自然语言描述,基于140个常见API测试陷阱输出全面的测试分析文档,涵盖参数校验、业务逻辑、响应验证和安全测试分析点。
---
# API测试分析文档生成器
目的
根据接口规格定义生成全面的API测试分析文档。将API定义转换为结构化的测试分析,确保覆盖参数校验、业务逻辑、响应验证和常见陷阱的测试点分析。
使用时机
在以下情况下使用此技能:
工作流程
步骤1:解析接口定义
从输入中提取:
1. **基本信息**:端点路径、HTTP方法、描述
2. **请求参数**:名称、类型、约束、必填/可选
3. **返回字段**:名称、类型、描述
4. **业务规则**:校验规则、状态转换、权限
支持的输入格式:
步骤2:生成参数校验测试点分析
为每个参数基于类型生成测试点分析:
| 参数类型 | 测试点分析维度 |
|----------|----------------|
| string | 正常值、边界长度、空值、null、特殊字符、SQL注入风险、XSS风险、Unicode字符、编码问题 |
| integer | 正常值、最小/最大边界、零值、负数、小数(类型错误)、溢出、精度问题 |
| number | 正常值、精度、科学计数法、边界值、NaN、Infinity |
| enum | 所有有效值、无效值、大小写敏感、null、空字符串、数字枚举 |
| boolean | true/false、字符串转换、数字转换、null、其他值 |
| array | 空数组、单元素、多元素、最大元素数、重复元素、无效元素、嵌套数组 |
| object | 完整对象、缺少必填字段、额外字段、空对象、嵌套对象深度 |
| datetime | 当前时间、过去时间、未来时间、闰年、无效日期、时区、格式错误、时间精度 |
步骤3:生成业务逻辑测试点分析
识别规则模式并生成测试分析场景:
| 规则模式 | 测试点分析 |
|----------|------------|
| 存在性校验 | 数据存在、不存在、已删除、逻辑删除、缓存不一致 |
| 唯一性校验 | 首次创建、重复尝试、并发创建、大小写敏感、特殊字符 |
| 状态转换 | 合法转换、非法转换、循环状态、终态、初始状态 |
| 权限校验 | 已授权、未授权、未登录、权限变更、角色变更、越权访问 |
| 关联校验 | 关联数据存在、不存在、已删除、外键约束、级联操作 |
| 数量限制 | 达到上限、超过上限、低于下限、批量操作限制、分页限制 |
| 时间窗口 | 有效期内、已过期、即将过期、时区影响 |
步骤4:生成响应验证测试点分析
| 接口类型 | 验证点分析 |
|----------|------------|
| 列表查询 | 结构完整性、分页字段、字段类型、空列表返回[]、null处理、排序 |
| 详情查询 | 必填字段存在、字段类型正确、404处理、null字段、关联数据完整性 |
| 创建 | 返回新ID、数据库验证、默认值、时间戳、返回字段完整性、状态码 |
| 更新 | 成功状态、数据变更验证、未变更字段保持原值、部分更新、全量更新 |
| 删除 | 成功状态、记录删除验证、软删除/硬删除、后续查询返回404、级联删除 |
| 文件上传 | 文件大小限制、文件类型、空文件、超大文件、文件名、多文件 |
| 文件下载 | 内容类型、文件名、文件完整性、断点续传、大文件分片 |
步骤5:生成安全测试点分析
**必须包含的安全测试分析**:
步骤6:生成性能测试点分析
**适用时的性能测试分析**:
步骤7:对照常见陷阱检查
最终确定前,验证Top 20必检项的覆盖:
| 类别 | 必检项 | 分析重点 |
|------|--------|----------|
| 参数 | 缺少必填、类型/格式错误、边界值 | 验证是否考虑完整 |
| 权限 | 未认证访问、未授权访问 | 权限矩阵是否覆盖 |
| 安全 | SQL注入、XSS、敏感数据暴露 | 安全场景是否分析 |
| 业务 | 幂等性、唯一性、状态转换 | 业务规则是否完整 |
| 响应 | 状态码一致、字段完整、空结果 | 响应契约是否验证 |
| 性能 | 响应阈值、分页限制、批量限制 | 性能指标是否定义 |
参考 `references/common-pitfalls.md` 获取完整的140点清单。
输出格式
单接口测试分析格式
## API: {接口名称}
### 基本信息
- **端点**:{METHOD} {路径}
- **描述**:{接口描述}
- **标签**:{Swagger标签}
- **认证**:{是否需要认证}
### 请求参数分析
#### 1. {参数名} ({类型}, {必填/可选})
**约束条件**:{长度、格式、枚举值等}
**参数校验测试点分析**:
| 测试场景 | 测试值 | 预期结果 | 优先级 | 测试目的 |
|----------|--------|----------|--------|----------|
| 正常值 | {valid} | 成功 | P0 | 验证基本功能 |
| 边界值-最小 | {min} | 成功 | P1 | 验证下边界 |
| 边界值-最大 | {max} | 成功 | P1 | 验证上边界 |
| 边界值-超过 | {max+1} | 参数错误 | P1 | 验证越界处理 |
| 空值 | "" | 参数错误 | P0 | 验证空字符串 |
| null | null | 参数错误 | P0 | 验证null处理 |
| 特殊字符 | {special} | 参数错误 | P0 | 验证特殊字符过滤 |
| SQL注入 | {sql} | 参数错误 | P0 | 验证SQL注入防护 |
| XSS攻击 | {xss} | 参数错误 | P0 | 验证XSS防护 |
**风险分析**:{高/中/低}
#### 2. {参数名} ({类型}, {必填/可选})
...
### 业务逻辑测试点分析
#### 场景1:{业务场景名称}
**前置条件**:{条件描述}
| 操作步骤 | 输入数据 | 预期结果 | 优先级 | 测试目的 |
|----------|----------|----------|--------|----------|
| 步骤1 | {data1} | {result1} | P0 | {purpose1} |
| 步骤2 | {data2} | {result2} | P1 | {purpose2} |
**业务规则验证**:{规则描述}
**数据一致性检查**:{检查点}
#### 场景2:{业务场景名称}
...
### 响应验证测试点分析
#### 成功响应(2xx)
**状态码**:201 Created
**响应体验证**:
| 字段 | 类型 | 验证内容 | 优先级 |
|------|------|----------|--------|
| code | Integer | 等于200 | P0 |
| message | String | 包含"成功" | P0 |
| data | Object | 不为null | P0 |
| data.id | Long | 大于0 | P0 |
| data.createTime | DateTime | 不为null,格式正确 | P1 |
**数据完整性验证**:
- 数据库中记录已创建
- 时间戳字段自动填充
- 关联数据正确建立
#### 错误响应(4xx)
**状态码**:400 Bad Request
| 错误场景 | 响应体验证 | 优先级 |
|----------|------------|--------|
| 参数缺失 | code=400, message包含"必填" | P0 |
| 参数格式错误 | code=400, message包含"格式" | P0 |
| 业务规则违反 | code=409, message包含"已存在" | P0 |
#### 异常响应(5xx)
**状态码**:500 Internal Server Error
| 异常场景 | 响应体验证 | 日志验证 | 优先级 |
|----------|------------|----------|--------|
| 数据库异常 | code=500, message不包含敏感信息 | 记录错误堆栈 | P0 |
| 外部服务异常 | code=503, 触发熔断 | 记录熔断日志 | P1 |
### 安全测试点分析
#### 认证安全
| 测试场景 | 测试操作 | 预期结果 | 风险等级 |
|----------|----------|----------|----------|
| 未认证访问 | 不携带Token调用接口 | 返回401 Unauthorized | 高 |
| Token过期 | 使用过期Token | 返回401, message提示Token过期 | 高 |
| Token篡改 | 修改Token签名 | 返回401, message提示Token无效 | 高 |
| Token刷新 | 使用RefreshToken获取新Token | 返回新Token, 旧Token失效 | 中 |
#### 授权安全
| 测试场景 | 测试操作 | 预期结果 | 风险等级 |
|----------|----------|----------|----------|
| 越权访问 | 用户A访问用户B的数据 | 返回403 Forbidden | 高 |
| 垂直越权 | 普通用户访问管理员接口 | 返回403 Forbidden | 高 |
| 权限变更 | 权限变更后访问接口 | 按新权限控制 | 中 |
#### 数据安全
| 测试场景 | 测试操作 | 预期结果 | 风险等级 |
|----------|----------|----------|----------|
| SQL注入 | 输入SQL特殊字符 | 返回400, 不被注入 | 高 |
| XSS攻击 | 输入<script>标签 | 返回400, 内容被转义 | 高 |
| 敏感数据泄露 | 检查响应字段 | 密码、密钥不返回 | 高 |
| 日志脱敏 | 检查日志文件 | 敏感信息被脱敏 | 中 |
### 性能测试点分析
#### 响应时间要求
- **P0优先级接口**:< 200ms (95分位)
- **P1优先级接口**:< 500ms (95分位)
- **P2优先级接口**:< 1000ms (95分位)
- **P3优先级接口**:< 2000ms (95分位)
#### 压力测试场景
| 场景 | 并发数 | 持续时间 | 预期结果 | 关注点 |
|------|--------|----------|----------|--------|
| 基准测试 | 1 | 10分钟 | 响应稳定 | 基准响应时间 |
| 负载测试 | 10 | 30分钟 | 成功率>99.9% | 系统负载 |
| 压力测试 | 50 | 15分钟 | 成功率>99% | 系统瓶颈 |
| 峰值测试 | 100 | 5分钟 | 不崩溃 | 最大承载 |
#### 性能监控指标
- **响应时间**:平均、P95、P99、最大值
- **吞吐量**:TPS、QPS
- **错误率**:4xx、5xx比例
- **资源使用率**:CPU、内存、磁盘IO、网络IO
- **数据库指标**:连接数、慢查询、锁等待
### 兼容性测试点分析
#### 客户端兼容性
| 客户端类型 | 版本范围 | 测试重点 | 优先级 |
|------------|----------|----------|--------|
| Web浏览器 | Chrome, Firefox, Safari, Edge | 最新+前2个版本 | P1 |
| 移动端 | iOS, Android | 主流版本 | P2 |
| 桌面应用 | Windows, macOS, Linux | 主流版本 | P2 |
#### 数据格式兼容性
| 格式类型 | 测试内容 | 预期结果 | 优先级 |
|----------|----------|----------|--------|
| JSON | 标准JSON、嵌套对象、数组 | 正确解析 | P0 |
| XML | 支持情况 | 正确解析或返回415 | P2 |
| Form | application/x-www-form-urlencoded | 正确解析 | P1 |
| Multipart | multipart/form-data | 正确解析 | P1 |
### 测试数据设计
#### 正向测试数据
{
"username": "testuser",
"password": "Test123456",
"email": "test@example.com",
"phone": "13800138000"
}
#### 边界测试数据
{
"username": "a", // 最小长度
"username": "a" * 20, // 最大长度
"username": "a" * 21 // 超过最大长度
}
#### 异常测试数据
{
"username": null, // null值
"username": "", // 空字符串
"username": "<script>alert(1)</script>", // XSS
"username": "admin'--", // SQL注入
"username": "../../etc/passwd" // 路径遍历
}
### 测试执行建议
#### 执行优先级
1. **P0测试点**(核心功能):100%执行,必须全部通过
2. **P1测试点**(重要功能):100%执行,通过率>95%
3. **P2测试点**(一般功能):80%执行,通过率>90%
4. **P3测试点**(次要功能):50%执行,通过率>80%
#### 执行阶段
- **冒烟测试**:所有P0测试点,30分钟
- **功能测试**:P0+P1测试点,2天
- **深度测试**:P0+P1+P2测试点,3天
- **回归测试**:全量测试点,1天
#### 执行环境
- **开发环境**:功能验证、快速反馈
- **测试环境**:完整测试、集成测试
- **预生产环境**:性能测试、安全测试
- **生产环境**:冒烟测试、监控验证
### 风险分析
#### 高风险
- Token认证机制
- 权限控制体系
- 敏感数据处理
- 支付/交易接口
#### 中风险
- 业务数据完整性
- 第三方服务集成
- 文件上传下载
- 批量操作
#### 低风险
- 查询统计接口
- 只读数据接口
- 静态资源配置
### 总结
#### 测试点统计
- 参数校验测试点:X个
- 业务逻辑测试点:X个
- 响应验证测试点:X个
- 安全测试点:X个
- 性能测试点:X个
- **总计:X个测试点**
#### 测试覆盖
- 功能覆盖:100%
- 参数覆盖:100%
- 业务规则覆盖:100%
- 安全场景覆盖:100%
- 性能指标覆盖:80%
#### 建议
1. 优先执行P0和P1测试点
2. 重点关注安全测试点
3. 在生产环境执行冒烟测试
4. 建立自动化测试回归套件
5. 定期评审测试点有效性
---
多接口测试分析格式
# {系统名称} API测试分析报告
## 文档信息
- **生成日期**:{date}
- **接口总数**:{count}
- **测试点总数**:{total_points}
- **生成工具**:api-test-create v{version}
## 接口清单
| 序号 | 接口名称 | 路径 | 方法 | 优先级 | 测试点数 |
|------|----------|------|------|--------|----------|
| 1 | 用户注册 | /api/users | POST | P0 | 32 |
| 2 | 用户登录 | /api/auth/login | POST | P0 | 28 |
| ... | ... | ... | ... | ... | ... |
## 模块划分
### 1. 认证管理模块
**接口数量**:6个
**风险等级**:🔴 高
**测试重点**:Token认证、密码安全、输入验证
**测试点数**:150+
### 2. 产品管理模块
**接口数量**:6个
**风险等级**:🟡 中
**测试重点**:CRUD操作、数据一致性、分页逻辑
**测试点数**:120+
## 测试策略
### 测试优先级
- **P0(Critical)**:核心功能,必须测试通过
- **P1(High)**:重要功能,影响用户体验
- **P2(Medium)**:一般功能,优化体验
- **P3(Low)**:次要功能,可后期补充
### 测试类型
1. **功能测试**:验证业务逻辑正确性
2. **参数测试**:验证输入验证机制
3. **安全测试**:验证安全防护能力
4. **性能测试**:验证系统性能指标
5. **兼容性测试**:验证多环境兼容性
## 详细测试分析
### 1.1 用户注册接口
#### 基本信息
- **端点**:POST /api/users
- **描述**:创建新用户账号
- **认证**:否
- **模块**:认证管理
#### 参数校验测试点分析
...
#### 业务逻辑测试点分析
...
(后续内容同单接口格式)
## 测试数据设计
### 正向数据
{
"username": "valid_user",
"password": "Valid123",
"email": "test@example.com"
}
### 边界数据
{
"username": "a", // 最小长度
"username": "a" * 20, // 最大长度
"username": "a" * 21 // 超过最大长度
}
### 异常数据
{
"username": null, // null值
"username": "", // 空字符串
"username": "<script>", // XSS
"username": "admin'--" // SQL注入
}
## 测试执行建议
### 第一阶段:冒烟测试(2小时)
执行所有P0测试点,验证核心功能
### 第二阶段:功能测试(2天)
执行P0+P1测试点,覆盖主要业务场景
### 第三阶段:深度测试(3天)
执行P0+P1+P2测试点,包括性能和安全
### 第四阶段:回归测试(1天)
全量测试点回归,确保修改不影响已有功能
## 测试环境要求
### 硬件要求
- CPU:4核以上
- 内存:8GB以上
- 硬盘:50GB可用空间
### 软件要求
- JDK 11+
- MySQL 8.0+
- Redis 6.0+
- Git 2.0+
## 风险分析
### 高风险接口
1. 认证相关接口(登录、注册、Token刷新)
2. 支付/交易接口
3. 权限管理接口
### 中风险接口
1. 核心业务数据操作
2. 第三方服务集成
3. 文件上传下载
### 低风险接口
1. 查询统计接口
2. 只读数据接口
3. 静态资源配置
## 总结
### 测试点统计
- **参数校验**:XXX个
- **业务逻辑**:XXX个
- **响应验证**:XXX个
- **安全测试**:XXX个
- **性能测试**:XXX个
- **总计**:XXXX个测试点
### 建议
1. 建立测试用例管理系统
2. 实施自动化测试回归
3. 定期进行安全扫描
4. 监控生产环境性能指标
5. 持续优化测试策略
---
**文档生成日期**:{date}
**生成工具**:api-test-create v{version}
**下次评审**:建议每月评审一次
参考资源
| 文档 | 用途 |
|------|------|
| `references/test-case-design.md` | 详细的测试用例设计方法和代码示例 |
| `references/common-pitfalls.md` | 完整的140点API测试陷阱清单 |
| `examples/openapi-example.yaml` | OpenAPI格式示例 |
| `examples/simple-example.md` | 简化定义格式示例 |
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...