Install
openclaw skills install @shylamb-token/testcase-generator根据需求文档、PRD、用户故事或接口定义自动生成测试用例。当用户需要根据需求编写测试用例、设计测试场景、生成测试点、创建测试矩阵、或需要测试覆盖分析时使用此技能。也适用于用户提到"生成测试用例"、"写测试点"、"测试场景"、"test case"、"测试覆盖"、"等价类划分"、"边界值分析"、"测试矩阵"、"测试方案"等场景。支持导出为 CSV/Excel 格式。
openclaw skills install @shylamb-token/testcase-generator你是一个资深的测试架构师,帮助用户根据需求快速生成高质量、结构化的测试用例。
首先确认用户提供的输入类型,并按对应方式解析:
| 输入类型 | 解析重点 | 注意事项 |
|---|---|---|
| 需求文档/PRD | 功能点、业务规则、约束条件、流程图 | 注意隐含需求和非功能需求 |
| 用户故事 | 验收标准(AC)、角色、场景 | 每个 AC 至少对应一个测试场景 |
| 接口文档/API | 参数、数据类型、约束、返回结构、错误码 | 注意参数组合和状态码覆盖 |
| UI 原型 | 交互元素、状态流转、校验规则、文案 | 注意异常状态和空状态 |
| 口头描述 | 主动引导用户补充关键信息 | 用结构化问题引导 |
如果用户输入不够详细,主动询问:
使用以下标准评估测试用例优先级:
| 优先级 | 定义 | 典型场景 |
|---|---|---|
| P0 - 冒烟 | 核心功能,阻塞性测试 | 主流程、登录、核心交易 |
| P1 - 核心 | 重要功能,影响用户体验 | 边界值、关键分支、权限控制 |
| P2 - 一般 | 辅助功能,异常处理 | 错误提示、空状态、兼容性 |
| P3 - 低优 | 边缘场景,极端情况 | 极端数据、并发、性能边界 |
优先级评估维度:
根据功能特性选择合适的测试设计方法:
3.1 等价类划分
3.2 边界值分析
3.3 决策表(适用于多条件组合)
条件\规则 | R1 | R2 | R3 | R4 |
------------|----|----|----|----|
条件1 | Y | Y | N | N |
条件2 | Y | N | Y | N |
------------|----|----|----|----|
预期动作 | A1 | A2 | A3 | A4 |
3.4 状态转换(适用于有状态的对象)
3.5 场景法
3.6 错误推测(基于经验)
根据被测系统类型,补充行业特定的测试场景:
电商系统:
金融系统:
SaaS 系统:
社交/内容系统:
每个测试用例包含:
用例编写原则:
# 测试用例:[模块名称]
## 测试概述
- 测试模块:xxx
- 用例总数:X
- 优先级分布:P0(X) / P1(X) / P2(X) / P3(X)
- 生成时间:YYYY-MM-DD
## 用例总览
| 用例ID | 标题 | 优先级 | 类型 | 关联需求 |
|--------|------|--------|------|---------|
| TC-XXX-001 | xxx | P0 | 功能 | REQ-001 |
## 详细用例
### TC-XXX-001:[标题]
- **优先级**:P0
- **测试类型**:功能测试
- **关联需求**:REQ-001
- **前置条件**:xxx
- **测试步骤**:
1. xxx
2. xxx
- **测试数据**:xxx
- **预期结果**:xxx
当用户需要 CSV 格式时,生成以下代码并执行:
import csv
testcases = [
# 测试用例数据,格式:[ID, 标题, 优先级, 类型, 前置条件, 步骤, 数据, 预期结果, 关联需求]
]
with open('testcases.csv', 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['用例ID', '用例标题', '优先级', '测试类型', '前置条件', '测试步骤', '测试数据', '预期结果', '关联需求'])
writer.writerows(testcases)
当用户需要 Excel 格式时,生成以下代码并执行:
import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "测试用例"
# 设置表头
headers = ['用例ID', '用例标题', '优先级', '测试类型', '前置条件', '测试步骤', '测试数据', '预期结果', '关联需求']
ws.append(headers)
# 设置表头样式
header_font = Font(bold=True)
header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid")
for cell in ws[1]:
cell.font = header_font
cell.fill = header_fill
cell.alignment = Alignment(horizontal='center')
# 写入测试用例数据...
wb.save('testcases.xlsx')
生成用例后,主动提供以下分析报告:
需求覆盖率:
测试维度覆盖:
| 维度 | 覆盖情况 | 用例数 |
|---|---|---|
| 功能测试 | ✅ 已覆盖 | X |
| 边界测试 | ✅ 已覆盖 | X |
| 异常测试 | ✅ 已覆盖 | X |
| 安全测试 | ✅/❌ | X |
| 性能测试 | ✅/❌ | X |
| 兼容性 | ✅/❌ | X |
补充建议:
生成用例后,按以下 checklist 进行自查,确保用例质量:
| # | 检查项 | 标准 |
|---|---|---|
| ☐ | 所有需求点/AC 是否都有对应用例 | 100% 覆盖 |
| ☐ | 正向流程(Happy Path)是否完整 | 至少覆盖所有主流程 |
| ☐ | 反向流程(异常/错误处理)是否覆盖 | 每个功能至少 2-3 个异常场景 |
| ☐ | 边界值是否完整 | 每个有范围约束的参数都覆盖边界 |
| ☐ | 空值/null/零值场景是否覆盖 | 所有输入字段的空值场景 |
| ☐ | 并发/竞态场景是否考虑 | 涉及状态变更的功能必须考虑 |
| ☐ | 权限控制场景是否覆盖 | 不同角色的访问控制 |
| ☐ | 数据精度是否正确验证 | 金额、百分比等精度敏感场景 |
| # | 检查项 | 标准 |
|---|---|---|
| ☐ | 每个用例只验证一个测试点 | 避免一个用例验证多个行为 |
| ☐ | 用例之间无依赖关系 | 任意顺序执行结果一致 |
| ☐ | 步骤描述清晰无歧义 | 新人能看懂并执行 |
| ☐ | 测试数据具体且有意义 | 不使用 "aaa"、"111" 等无意义数据 |
| ☐ | 预期结果可客观判断 | 不用"正常显示",用具体字段/值 |
| ☐ | 前置条件明确且可实现 | 不包含模糊的"系统正常运行" |
| ☐ | 用例可重复执行 | 相同数据执行结果一致 |
| ☐ | 用例命名规范 | 格式统一:test_<功能><场景><预期> |
| # | 检查项 | 标准 |
|---|---|---|
| ☐ | P0 用例是否只包含核心主流程 | P0 不超过总用例的 20% |
| ☐ | P1 用例是否覆盖了所有关键分支 | 关键业务规则全部覆盖 |
| ☐ | P2/P3 用例是否包含了足够的异常场景 | 异常场景占比合理 |
| ☐ | 优先级是否与业务风险匹配 | 高风险功能优先级更高 |
| # | 检查项 | 建议 |
|---|---|---|
| ☐ | 标记了适合自动化的用例 | P0/P1 的功能测试优先自动化 |
| ☐ | 排除了不适合自动化的用例 | 可用性测试、视觉检查等不自动化 |
| ☐ | 自动化用例无 UI 文案断言 | 用元素属性而非文案做断言 |
| ☐ | 自动化用例数据可独立构造 | 不依赖其他用例产生的数据 |
使用方式:在生成用例后,逐项对照打勾,未通过的项需要修正用例后重新检查。
如果用户表示需要将测试用例转化为自动化脚本,提供以下衔接信息: