開発
#api
api-test-create
当用户需要根据接口规格生成API测试分析文档时使用此技能。接受OpenAPI/Swagger文档、简化接口定义或自然语言描述,基于140个常见API测试陷阱输出全面的测试分析文档,涵盖参数校验、业务逻辑、响应验证和安全测试分析点。
DeepseekModel
キュレーション済みスキル
品質 優秀 · 90
v1.0.0
取得
https://deepseekmodel.com/api/download.php?id=leoyeai-openclaw-master-skills-skills-apitestcreate-skill-md&format=skill
ダウンロード .skill
標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能
.skill ファイルの system_prompt フィールドの実際の内容。
name api-test-create description 当用户需要根据接口规格生成API测试分析文档时使用此技能。接受OpenAPI/Swagger文档、简化接口定义或自然语言描述,基于140个常见API测试陷阱输出全面的测试分析文档,涵盖参数校验、业务逻辑、响应验证和安全测试分析点。 API测试分析文档生成器 目的 根据接口规格定义生成全面的API测试分析文档。将API定义转换为结构化的测试分析,确保覆盖参数校验、业务逻辑、响应验证和常见陷阱的测试点分析。 使用时机 在以下情况下使用此技能: 为新API端点设计测试策略时 审查API测试覆盖完整性时 需要测试分析文档供团队评审时 针对常见陷阱审计API质量时 生成测试方案和测试点清单时 工作流程 步骤1:解析接口定义 从输入中提取: 基本信息 :端点路径、HTTP方法、描述 请求参数 :名称、类型、约束、必填/可选 返回字段 :名称、类型、描述 业务规则 :校验规则、状态转换、权限 支持的输入格式: OpenAPI/Swagger JSON/YAML 简化接口定义(Markdown格式) 自然语言描述 步骤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:生成安全测试点分析 必须包含的安全测试分析 : SQL注入 :参数拼接、特殊字符转义、ORM框架使用、存储过程 XSS攻击 :输入过滤、输出转义、富文本处理、CSP策略 认证安全 :Token强度、Token过期、Refresh机制、会话管理、暴力破解防护 授权安全 :越权访问、水平越权、垂直越权、权限继承、权限缓存 敏感数据 :密码加密存储、身份证号脱敏、日志脱敏、传输加密 CSRF防护 :Token验证、Referer检查、SameSite Cookie、双重提交 信息泄露 :错误信息、堆栈跟踪、调试模式、敏感接口暴露 速率限制 :IP限流、用户限流、接口限流、突发流量、熔断降级 步骤6:生成性能测试点分析 适用时的性能测试分析 : 响应时间阈值 :P95、P99、平均响应、最大响应、超时设置 大数据量处理 :分页深度、批量操作、大数据返回、内存占用 并发访问 :锁竞争、死锁、连接池、线程池、异步处理 资源消耗 :CPU、内存、磁盘IO、网络IO、文件句柄 缓存策略 :缓存命中率、缓存穿透、缓存雪崩、缓存一致性 数据库性能 :慢查询、索引使用、连接数、事务、锁等待 步骤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 | ### 测试数据设计 #### 正向测试数据 ```json { "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" // 路径遍历 } 测试执行建议 执行优先级 P0测试点 (核心功能):100%执行,必须全部通过 P1测试点 (重要功能):100%执行,通过率>95% P2测试点 (一般功能):80%执行,通过率>90% P3测试点 (次要功能):50%执行,通过率>80% 执行阶段 冒烟测试 :所有P0测试点,30分钟 功能测试 :P0+P1测试点,2天 深度测试 :P0+P1+P2测试点,3天 回归测试 :全量测试点,1天
このスキルを起動するキーワード。クリックでコピーできます。
このスキルにはトリガーワードがありません。
ダウンロードした .skill に含まれるフィールド。
| フィールド | 説明 |
|---|---|
| format | フォーマット識別子(skill/v1) |
| skill_id | スキル固有 ID |
| name | スキル名 |
| version | バージョン |
| description | 説明 |
| category | カテゴリ(配列) |
| trigger_words | トリガーワード |
| tags | タグ |
| source | ソース |
| source_url | ソース URL(本ページ) |
| exported_at | エクスポート日時(ダウンロード毎) |
| system_prompt | システムプロンプト本文 |
| model_config | モデル設定:provider / model / temperature / max_tokens / top_p |
| examples | サンプル |
| install_guide | 各プラットフォームの導入説明(Coze / Dify / Claude / カスタム) |