testcase-creator
# 通用测试用例生成器技能
## 概述
本技能自动化从需求文档生成测试用例文档的过程。它分析需求内容、提取功能模块和测试点、生成结构化的Markdown测试用例文档。当用户明确要求时,还可以将Markdown转换为XMind思维导图格式。
**核心特性**:
- ✅ 深度需求分析,挖掘所有测试细节
- ✅ 按完整功能流程组织测试用例
- ✅ 默认生成Markdown格式,按需生成XMind思维导图
- ✅ **时间戳版本管理**:每次生成都添加时间戳后缀,保留所有历史版本
**🚨 核心原则(必读)**:
1. **深入分析需求**:不要浮于表面,必须逐句分析需求文档,挖掘所有测试细节
2. **充分覆盖细节**:验证项数量不设上限,核心功能的每个细节都要有对应的验证项
3. **不要人为限制**:不要为了控制数量而合并验证项,每个可独立验证的点都应单独列出
4. **质量优先于数量**:宁可测试用例详细冗长,也不要遗漏核心功能的测试细节
5. **保留历史版本**:每次生成都添加时间戳,所有版本都被保留,便于版本管理和对比
## 何时使用此技能
在以下情况下使用此技能:
- 用户提供需求文档并请求生成测试用例
- 用户要求从产品规格说明或设计文档创建测试用例
- 用户需要将现有需求文档转换为测试用例
- 用户提到关键词如"测试用例"、"test cases"、"需求文档"
**XMind生成触发条件**:
- 用户明确要求生成"思维导图格式"或"mindmap格式"
- 用户明确要求生成"xmind格式"
- 用户要求"同时生成md和xmind"
**默认行为**:仅生成Markdown格式的测试用例文档
## 工作流程
### 步骤0:初始化(必须最先执行)
**🚨 在执行任何其他步骤之前,必须先读取以下所有参考文档!这是强制要求,不可跳过。**
```
必须依次读取以下文件:
1. {skills_dir}/references/testcase_template.md — 格式规范(生成文档必须严格遵守)
2. {skills_dir}/references/analysis_guide.md — 需求分析方法和验证项生成示例
3. {skills_dir}/references/quality_standard.md — 质量标准、命名规范、SMART原则
4. {skills_dir}/references/module_merge_guide.md — 功能模块归并指南和示例
```
读取完毕后,将这些文档的内容作为后续所有步骤的执行依据。
### 步骤1:读取和分析需求文档
从提供的来源(文件路径或直接内容)读取需求文档内容。**这一步是测试用例质量的关键,必须深入分析,不能浮于表面。**
#### 1.1 文档读取
**重要提示**:
- 如果需求以URL形式提供(如飞书文档),**先尝试直接读取文档内容**,如果无法获取到内容,再尝试找其他相关技能来下载文档
- 如果需求以文件路径形式提供,直接读取文件内容
- 专注于文字内容,除非图片包含关键信息,否则忽略图片
#### 1.2 深度需求分析方法
**必须对需求进行深度分析,不要只停留在表面!** 详见 `references/analysis_guide.md`。
使用以下五种分析法逐句挖掘测试细节:
- **逐句分析法**:识别条件词/动作词/状态词/数据词,提取每个要素对应的验证项
- **业务流程分析法**:识别流程节点、判断分支、异常退出,每个节点都要有测试点
- **数据流分析法**:追踪数据获取→处理→存储→展示的完整链路
- **状态转换分析法**:识别所有状态及转换条件,每个状态转换都要有验证项
- **用户场景分析法**:从不同角色、正常/异常/极端场景角度分析
#### 1.3 分析结果整理
将分析结果整理为:功能模块清单、业务规则清单、异常场景清单、测试数据清单。
### 步骤2:生成Markdown测试用例文档
**重要提示**:必须严格遵守 `references/testcase_template.md` 中定义的格式规范!
#### 2.0 文件命名规则
**核心原则**:每次生成都添加时间戳后缀,便于版本管理和历史追溯
本技能使用自动化脚本为每个测试用例文件添加时间戳后缀,确保所有版本都被保留,便于对比和回溯。
##### 2.0.1 命名规则
**文件名格式**:
```
{需求文档名称}-v{MMdd_HHmmss}.md
{需求文档名称}-v{MMdd_HHmmss}.xmind
```
**时间戳格式**:
- 格式:`MMdd_HHmmss`(月日_时分秒)
- 示例:`0318_143052` 表示3月18日14:30:52
##### 2.0.2 使用方法
```bash
python3 scripts/generate_filename.py "<base_name>" "<output_dir>"
# 输出JSON:{"md_file": "...", "xmind_file": "...", "base_name": "..."}
```
#### 2.1 标准格式结构
按照以下标准结构创建Markdown测试用例文档:
```markdown
# {产品需求名称} - 测试用例
## 一、{功能模块名称}
### 1.1 {子功能名称}
#### 1.1.1 {功能点名称}
- **测试点:{测试点名称}**
- [ ] {验证项1}
- [ ] {验证项2}
- [ ] {验证项3}
- **测试点:{测试点名称}**
- [ ] {验证项1}
- [ ] {验证项2}
### 1.2 {子功能名称}
#### 1.2.1 {功能点名称}
- **测试点:{测试点名称}**
- [ ] {验证项1}
```
#### 2.2 格式规范要求
**必须遵守的格式规则**:
1. **标题层级规范**:
- `# 一级标题`:产品名称(文档根标题)
- `## 二级标题`:功能模块(使用"一、二、三、"等中文序号)
- `### 三级标题`:子功能(使用"1.1、1.2、2.1、"等编号)
- `#### 四级标题`:功能点(使用"1.1.1、1.1.2、"等编号)
2. **测试点格式规范**:
- 必须使用粗体标记:`**测试点:XXX验证**`
- 测试点名称应具体明确,描述验证目标
- 示例:`**测试点:触发条件验证**`、`**测试点:展示验证**`
3. **验证项格式规范**:
- 必须使用待办事项格式:`- [ ] 验证项内容`
- 使用2个空格缩进表示层级关系
- 每个验证项应具体、可执行、可验证
- 避免模糊描述,如"验证功能正常"应改为"验证点击按钮后跳转到正确页面"
4. **文本处理规范**:
- 保留粗体标记 `**文本**`
- 支持emoji和特殊字符
- 不使用checkbox标记 `[x]`,统一使用 `[ ]`
#### 2.3 测试用例生成质量标准
**生成测试用例时必须遵循以下质量标准**,详见 `references/quality_standard.md`。
**必须包含的测试类型**:功能测试、UI/UX测试、异常场景测试(网络/数据/并发/权限)
**建议包含的测试类型**:边界条件测试、性能测试、兼容性测试、安全测试
**测试点命名**:`{对象}{类型}验证`,如"触发条件验证"、"网络异常验证"、"登录流程验证"
**验证项编写(SMART原则)**:
- ❌ 错误:验证功能正常 → ✅ 正确:验证点击"提交"按钮后,表单数据成功提交到服务器
- ❌ 错误:页面加载快 → ✅ 正确:页面首次加载时间不超过2秒
**验证项数量**:**不设上限**,核心功能必须充分覆盖所有条件分支、业务规则、边界情况、异常处理、状态转换。每个可独立验证的点都应单独列出,不要人为合并。
#### 2.4 测试用例生成流程
生成测试用例时,请严格按照以下流程执行:
##### 2.4.1 需求分析阶段(最重要)
**目标:深入理解需求,挖掘所有测试细节**
1. **通读需求文档**:
- 仔细阅读整个需求文档,不要跳过任何部分
- 理解业务背景和目标用户
- 识别关键业务流程和核心价值
2. **逐句分析需求**:
- **对每一句话进行深度分析**,提取测试点
- 标记所有条件判断(if/when/如果/当...时)
- 标记所有动作操作(点击/输入/选择/提交等)
- 标记所有状态变化(展示/隐藏/启用/禁用等)
- 标记所有数据交互(创建/读取/更新/删除等)
3. **识别和归并功能模块**:
**🚨 核心原则:按完整功能流程组织测试,而非按需求文档章节划分**,详见 `references/module_merge_guide.md`。
归并判断标准:同一功能的不同维度/层次 → 归并为一个模块;不同功能 → 各自独立。
每个功能模块按以下流程组织:触发条件验证 → 业务规则验证 → 数据准备验证 → 展示内容验证 → 交互行为验证 → 结果处理验证。
4. **提取业务规则**:
- 记录所有的业务规则和约束条件
- 每个规则都应转化为验证项
- 注意隐含的业务逻辑
5. **挖掘异常场景**:
- 思考每个功能可能的异常情况
- 网络异常、数据异常、权限异常等
- 边界条件和极限情况
6. **分析用户场景**:
- 从用户角度思考使用场景
- 考虑不同用户角色的行为
- 考虑不同的使用环境
详细需求分析示例见 `references/analysis_guide.md`。
##### 2.4.2 测试点设计阶段
**目标:为每个功能点设计全面的测试点**
1. **逐个功能点分析**:
- 不要遗漏任何功能点
- 每个功能点至少包含一个测试点
- 复杂功能点应拆分为多个测试点
2. **设计测试点类型**:
- 功能验证类:验证功能是否按预期工作
- 展示验证类:验证UI展示是否正确
- 交互验证类:验证用户交互是否流畅
- 异常验证类:验证异常处理是否合理
- 性能验证类:验证性能指标是否达标
- 安全验证类:验证安全措施是否到位
3. **考虑测试场景**:
- 正向场景:正常的业务流程
- 反向场景:异常和错误情况
- 边界场景:临界值和极限值
- 并发场景:多用户或多操作
##### 2.4.3 验证项编写阶段
**目标:为每个测试点编写详细可执行的验证项**
1. **细化每个测试点**:
- 将测试点拆解为具体的验证步骤
- 每个验证项对应一个可执行的测试操作
- 不限制验证项数量,确保充分覆盖
2. **使用具体描述**:
- 避免"验证功能正常"等模糊描述
- 使用"验证点击XX按钮后,跳转到XX页面"等具体描述
- 包含前置条件、操作步骤、预期结果
3. **覆盖所有细节**:
- **不要遗漏需求中的任何细节**
- 每个细节都应有对应的验证项
- 宁可多写,不要少写
4. **标注测试数据**:
- 明确测试所需的数据类型
- 标注特殊的测试数据要求
- 说明数据准备方法
##### 2.4.4 质量检查阶段
**目标:确保测试用例的完整性和准确性**
1. **需求覆盖检查**:
- 对照需求文档,逐条检查是否有对应测试用例
- 确保每个需求点都被覆盖
- 不遗漏任何功能细节
2. **格式规范检查**:
- 检查格式是否符合 testcase_template.md 规范
- 检查标题层级是否正确
- 检查验证项格式是否规范
3. **验证项质量检查**:
- 检查验证项是否具体明确
- 检查验证项是否可执行
- 检查验证项是否有遗漏
4. **重复性检查**:
- 检查是否有重复的测试点
- 检查是否有重复的验证项
- 合并或删除重复内容
#### 2.5 质量检查清单
生成测试用例后,必须进行以下检查:
**格式检查**:
- [ ] 标题层级是否正确(#、##、###、####)
- [ ] 测试点是否使用粗体标记
- [ ] 验证项是否使用 `- [ ]` 格式
- [ ] 缩进是否使用2个空格
**内容检查**:
- [ ] 是否覆盖所有功能模块
- [ ] 是否包含功能测试、异常测试、边界测试
- [ ] 验证项是否具体可执行
- [ ] 是否有遗漏的测试场景
**质量检查**:
- [ ] 测试点命名是否规范
- [ ] 验证项是否符合SMART原则
- [ ] 是否有重复的测试点或验证项
- [ ] 整体结构是否清晰易懂
### 步骤3:转换为XMind格式(可选)
**🚨 重要提示**:此步骤仅在用户明确要求生成"思维导图格式"或"xmind格式"时执行。默认情况下跳过此步骤。
生成Markdown文档后,如果用户要求思维导图格式,则使用转换脚本将其转换为XMind格式。
**重要提示**:转换脚本已内置格式处理逻辑,会自动遵循 testcase_template.md 中的转换规则。
#### 3.1 脚本位置
**`scripts/md_to_xmind.py`**:将Markdown测试用例文档转换为XMind格式的Python脚本
#### 3.2 使用方法
```bash
python3 {skills_dir}/scripts/md_to_xmind.py <input.md> <output.xmind> [title]
```
**参数说明**:
- `input.md`:生成的Markdown测试用例文档路径(必须符合testcase_template.md格式)
- `output.xmind`:输出的XMind文件路径
- `title`:(可选)XMind工作表标题,默认为"测试用例"
#### 3.3 转换规则
脚本会自动按照以下规则进行转换:
**Markdown到XMind的映射**:
| Markdown元素 | XMind元素 | 说明 |
| ------------------- | ---------- | ------------------------ |
| `# 一级标题` | 根主题 | 产品名称 |
| `## 二级标题` | 一级子主题 | 功能模块 |
| `### 三级标题` | 二级子主题 | 子功能 |
| `#### 四级标题` | 三级子主题 | 功能点 |
| `- **测试点:XXX**` | 四级子主题 | 测试点(带蓝色星标) |
| ` - [ ] 验证项` | 五级子主题 | 验证项(带绿色旗帜标记) |
**特殊处理**:
1. **Checkbox转换**:`[ ]` → `☐`(未完成状态)
2. **粗体处理**:保留粗体文本内容,移除`**`标记
3. **层级判断**:
- 标题层级:根据`#`数量判断
- 列表层级:根据缩进空格数判断(每2个空格一级)
#### 3.4 输出结果
转换完成后生成:
- **有效的XMind 3.0+格式文件**
- 可在XMind或XMind Zen中正常打开
- 保留完整的层次结构和格式
- 支持进一步的编辑和美化
### 步骤4:展示结果
完成测试用例生成后,必须向用户展示完整的测试用例文档和统计信息。
#### 4.1 展示内容
1. **展示Markdown文件**:
- 使用 `open_result_view` 显示生成的测试用例文档
- 让用户可以查看和编辑Markdown源文件
2. **报告统计信息**:
- 总测试点数量
- 总验证项数量
- 按模块分类的覆盖情况
- 测试类型分布(功能测试、异常测试、性能测试等)
3. **提供XMind文件路径**(仅当生成了XMind时):
- 告知用户XMind文件的完整路径
- 说明文件大小和节点数量
4. **提供测试建议**:
- 测试优先级建议(P0、P1、P2、P3)
- 重点测试模块提示
- 测试风险提示
- 测试环境准备建议
#### 4.2 质量报告
向用户提供测试用例质量报告:
```
📊 测试用例统计信息:
- 总测试点数:XX个
- 总验证项数:XX个
- 平均每个测试点验证项数:XX个
📈 测试覆盖情况:
- 功能测试:XX个测试点(XX%)
- 异常测试:XX个测试点(XX%)
- 性能测试:XX个测试点(XX%)
- 兼容性测试:XX个测试点(XX%)
✅ 质量检查结果:
- 格式规范:通过
- 完整性检查:通过
- 具体性检查:通过
```
## 打包资源
### 脚本
**`scripts/generate_filename.py`**:测试用例文件名生成器,自动添加时间戳后缀
- 每次生成都添加时间戳后缀(格式:-vMMdd_HHmmss)
- 输出JSON格式的文件路径,便于程序调用
- 使用方法:`python3 scripts/generate_filename.py "<base_name>" "<output_dir>"`
**`scripts/md_to_xmind.py`**:将Markdown测试用例文档转换为XMind格式的Python脚本
- 支持多级标题层次结构
- 保留测试点格式
- 转换复选框标记(☐表示未选中,☑表示已选中)
- 生成有效的XMind 3.0+格式
### 参考资料
**`references/testcase_template.md`**:测试用例文档格式规范(标准结构、格式示例、XMind映射规则)
**`references/analysis_guide.md`**:需求深度分析指南(逐句分析法、业务流程/数据流/状态转换/用户场景分析法、验证项生成详细示例)
**`references/quality_standard.md`**:测试用例质量标准(测试覆盖类型、命名规范、SMART原则、最佳实践、测试覆盖清单)
**`references/module_merge_guide.md`**:功能模块归并指南(章节关系识别、归并判断标准、测试结构设计、归并示例)
## 最佳实践
详见 `references/quality_standard.md`,包含:SMART原则详细说明、测试点组织原则(按模块/功能/场景/优先级P0~P3)、测试覆盖清单(必测/重要/可选场景)。
## 使用示例
所有场景的通用步骤:**获取文档内容 → 深度分析需求 → 生成测试用例 → 质量检查 → 展示结果**
### 示例1:本地文档生成测试用例
**用户**:"根据这份需求文档生成测试用例"
→ 直接读取文件 → 分析需求 → 生成Markdown → 展示结果+统计信息
### 示例2:生成思维导图格式
**用户**:"根据这份需求文档生成思维导图格式的测试用例"
→ 读取文档 → 生成Markdown → **执行XMind转换脚本** → 展示Markdown+告知XMind路径
### 示例3:从在线文档(飞书/腾讯文档等)生成测试用例
**用户**:"根据这个飞书文档 https://xxx.feishu.cn/xxx 生成测试用例"
1. **先尝试直接读取URL内容**;如果无法获取,使用其他相关技能下载文档
2. 分析需求 → 生成Markdown(如需XMind则同时转换)→ 展示结果
## 注意事项
### 格式要求
- **必须严格遵守** `references/testcase_template.md` 中定义的格式规范
- 所有生成的测试用例文档必须符合标准Markdown格式
- 转换脚本依赖标准格式,格式错误可能导致转换失败
### 质量保障
- 测试用例质量取决于需求文档的清晰度和完整性
- 每个验证项必须具体、可执行、可验证
- 必须包含功能测试、异常测试、边界测试等多种测试类型
- 生成后必须进行质量检查
### 使用限制
- 本技能专注于从需求文档生成测试用例
- 不支持从代码或数据库生成测试用例
- 对于非常大的文档,建议拆分为多个模块分别生成
- 图片内容会被忽略,只处理文字信息
### 输出格式
- **默认输出**:仅生成Markdown格式
- **XMind触发条件**:用户明确要求"思维导图格式"或"xmind格式"时才生成
- Markdown文档便于版本控制和协作编辑
- XMind思维导图便于可视化展示和评审
### 后续维护
- 需求变更时需要重新生成测试用例
- 建议定期review和更新测试用例
- 可以手动编辑Markdown文档后重新转换为XMind
### 常见问题
- **格式不正确**:检查是否符合 `testcase_template.md` 规范,重新生成
- **XMind转换失败**:检查Markdown标题层级和测试点格式是否规范
- **覆盖不全**:提供更详细的需求文档,或手动补充遗漏场景
- **文件名时间戳**:每次生成自动添加 `-vMMdd_HHmmss` 后缀,保留所有历史版本
- **只生成XMind**:不支持,XMind必须从Markdown转换,两种格式同时生成
标签
skill
ai