test-design
生成测试大纲与测试用例: 根据用户提供的产品需求文档(PRD)、Jira编号或功能描述,生成结构化的系统测试大纲,并根据大纲生成穷举所有测试点的测试用例。 提供: 产品需求文档(PRD)、Jira编号或功能描述。 适用: 本技能专注于测试策略规划、用例设计指导和测试用例生成。 不适用: 执行具体的测试用例或编写自动化测试脚本。 触发场景: 用户说"帮我生成测试大纲"、"设计测试用例"、"根据PRD写测试"
Source facts
- Repository
- liudoudou86/test-design
- Last source activity
- May 8, 2026 at 07:59
- Detected SKILL.md language
- Chinese
- Stars
- 1
- Forks
- 0
Install options
The review-first prompt is selected by default. You can switch to a direct command or download a local copy.
Review the source files
Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview- name
- test-design
- description
- 生成测试大纲与测试用例: 根据用户提供的产品需求文档(PRD)、Jira编号或功能描述,生成结构化的系统测试大纲,并根据大纲生成穷举所有测试点的测试用例。 提供: 产品需求文档(PRD)、Jira编号或功能描述。 适用: 本技能专注于测试策略规划、用例设计指导和测试用例生成。 不适用: 执行具体的测试用例或编写自动化测试脚本。 触发场景: 用户说"帮我生成测试大纲"、"设计测试用例"、"根据PRD写测试"
# TestDesign - 测试设计工作流
你负责将模糊的需求转化为清晰的测试分析和可执行的测试用例。采用四阶段门禁流程:**Analyze → Plan → TestOutline → TestCase**,每个阶段必须由用户确认后才能进入下一阶段。
## 路径约定
本 skill 的所有引用模板请优先从当前 skill 目录查找:
- 引用分析模板 `references/analyze_template.md`
- 引用计划模板 `references/plan_template.md`
- 引用大纲模板 `references/outline_template.md`
- 引用用例模板 `references/test_case_template.md`
脚本调用指定工作目录为当前 skill 目录:
- 运行脚本:`uv run python scripts/parse_jira_issue.py <JIRA_ISSUE>`
---
## 核心工作流程
### 阶段一:Analyze(需求分析)
**目标**:理解需求,澄清不确定性,输出结构化的需求分析文档。
1. **需求获取**:支持以下方式
- Jira编号 → 运行脚本获取完整需求内容
- 直接提供功能描述 → 直接进入分析
- 已有PRD → 直接进入分析
2. **需求分析与澄清**:理解需求后,如果描述模糊,提问以下问题:
- **用户角色**:目标用户是谁?是否有不同角色权限?
- **核心功能**:主要业务流程是什么?关键输入/输出?
- **边界条件**:数据范围?长度限制?有效/无效值?
- **成功标准**:怎样算成功?异常如何处理?
- **环境依赖**:需要哪些系统/接口支持?
3. **假设与权衡**:陈述你的理解与关键假设。存在多种解释时列出2-3种选项供选择;有更简单的方案时主动提出。
4. **生成Analyze文档**:引用 `references/analyze_template.md` 生成结构化需求分析文档,包含功能点、假设、边界条件、待澄清问题。
5. **用户确认**:等待用户确认后进入Plan阶段。
**完成标准**:所有模糊点已澄清,关键假设已确认,用户同意分析结果。
**输入**:用户提供的功能描述(PRD/Jira/口头)
**示例**:见 `examples/demo_analyze.md`
---
### 阶段二:Plan(测试规划)
**目标**:基于确认的Analyze,制定测试策略、范围和计划。
1. **确定测试范围**:明确 In Scope / Out of Scope
2. **选择测试类型与策略**:
- 引用 `references/test_types_detail.md` 选择测试类型
- 引用 `references/test_strategy.md` 确定测试策略
- 引用 `references/industry_standards.md` 选择行业标准模板
3. **环境与数据规划**:确定测试环境、测试数据准备方式
4. **风险评估**:识别技术风险、依赖风险
5. **生成Plan文档**:引用 `references/plan_template.md` 生成测试计划文档
6. **用户确认**:等待用户确认后进入TestOutline阶段。
**完成标准**:测试范围清晰,测试类型覆盖全面,用户同意测试计划。
**输入**:已确认的Analyze文档
**示例**:见 `examples/demo_plan.md`
---
### 阶段三:TestOutline(测试大纲)
**目标**:基于确认的Plan,生成结构化的测试点清单。
1. **功能拆解**:将需求拆解为可测的功能单元
2. **生成测试点清单**:按模块逐项生成测试点,覆盖正常流程、异常流程、边界条件
3. **标记交叉场景**:识别跨模块的集成场景
4. **覆盖度自检**:检查P0/P1功能点是否全部覆盖
5. **生成TestOutline文档**:引用 `references/outline_template.md` 生成测试大纲
6. **用户确认**:等待用户确认后进入TestCase阶段。
**完成标准**:测试点穷举完整,P0/P1功能点全覆盖,用户同意测试大纲。
**输入**:已确认的Plan文档
**示例**:见 `examples/demo_outline.md`
---
### 阶段四:TestCase(测试用例)
**目标**:基于确认的TestOutline,生成穷举的测试用例。
1. **解析测试大纲**:提取所有测试点
2. **选择用例生成方法**(引用 `references/test_case_generation_guide.md`):
- **等价类划分法**:划分有效/无效等价类
- **边界值分析法**:针对每个边界条件生成用例
- **场景法**:覆盖正常流程和关键异常场景
- **因果图/决策表法**:处理复杂输入组合
- **错误猜测法**:补充可能的异常场景
3. **选择用例模板**:
- 功能测试 → 引用 `references/test_case_templates.md#functional`
- UI/UX测试 → 引用 `references/test_case_templates.md#ui-ux`
- 兼容性测试 → 引用 `references/test_case_templates.md#compatibility`
- 性能测试 → 引用 `references/test_case_templates.md#performance`
- 安全测试 → 引用 `references/test_case_templates.md#security`
- 无障碍测试 → 引用 `references/test_case_templates.md#accessibility`
- 混合类型 → 为每种类型生成对应的用例模板
4. **选择输出格式**:询问用户偏好
- **Markdown 表格**(默认):适合审查和协作
- **CSV 文件**(UTF-8 with BOM):适合导入测试管理工具
- **两者都要**
5. **生成TestCase文档**:引用 `references/test_case_template.md` 生成完整测试用例
6. **收集反馈**:记录到 `evolution/feedback.json` 用于持续优化
**完成标准**:测试点已穷举,用例格式正确,用户反馈已记录。
**输入**:已确认的TestOutline文档
**示例**:见 `examples/demo_testcase.md`
---
### Review 模式
当用户提供已有的测试文档要求评审时:
| 输入 | 评审方式 |
|------|----------|
| 需求文档 | 检查可测试性、完整性、一致性 |
| 测试大纲 | 检查覆盖率、优先级、测试点完整性 |
| 测试用例 | 检查可执行性、预期结果可验证性、冗余性 |
1. **完整性检查**:检查是否覆盖所有功能点和边界条件
2. **一致性检查**:检查ID命名、优先级、测试类型分类是否一致
3. **可执行性检查**:检查步骤是否具体、预期结果是否可验证
4. **风险评估**:识别潜在的测试盲区或遗漏的高风险场景
---
## 快速决策树
### 用户提供了什么?
| 输入类型 | 进入阶段 |
|----------|----------|
| 功能想法/需求描述 | → Analyze 阶段 |
| Jira编号 | → 运行脚本获取需求后进入Analyze |
| 已有确认的需求文档 | → 可跳过Analyze,直接进入Plan |
| 已有测试计划,想生成大纲 | → TestOutline 阶段 |
| 已有测试大纲,想生成用例 | → TestCase 阶段 |
| "帮我看看这个测试方案有什么问题" | → Review 模式 |
### 需求详细程度
| 详细程度 | 处理方式 |
|----------|----------|
| 非常模糊(一句话) | 启动需求澄清对话,列出2-3种解释选项,输出Analyze文档待确认 |
| 中等(有功能描述) | 直接进入Analyze生成 |
| 较完整(有PRD) | 可跳过部分澄清,但仍输出Analyze文档待确认 |
### 测试用例生成方法选择
| 功能类型 | 优先方法 |
|----------|----------|
| 输入型功能(表单、API参数) | 等价类划分法 + 边界值分析法 |
| 流程型功能(购物、审批流程) | 场景法 |
| 复杂逻辑判断(折扣规则、权限控制) | 因果图/决策表法 |
| AI相关功能(推荐、风控) | 引用 `references/test_strategy.md` 特殊方法 |
| 综合场景 | 组合使用多种方法 |
---
## 迭代与冲突处理
### 迭代机制
- **返回上一阶段**:用户可随时要求返回上一阶段重新确认
- **增量补充**:新需求在已有文档基础上增量补充,而非重新生成。更新时只改动受影响部分,不重写相邻内容。修改后清理因变更产生的孤儿引用(废弃的TP ID、TC ID等)。每次变更应直接追溯到用户反馈。
- **版本标记**:每次确认后标记版本号,便于追溯
### 冲突处理
当用户需求矛盾时:
1. 列出冲突点,说明影响
2. 提供可行方案供选择
3. 等待用户明确优先级
4. 如果用户方案过于复杂或存在更优解,主动提出简化建议
### 用户反馈处理
| 反馈类型 | 处理方式 |
|----------|----------|
| 想修改某个点 | 标记需修改部分,重新生成该阶段 |
| 觉得整体方向不对 | 返回上一阶段重新确认 |
| 只同意部分 | 确认同意部分,未确认部分列出待议 |
---
## 如何使用模板、指南与示例
### 阶段一:Analyze
- **需要分析模板** → 请我读取 `references/analyze_template.md`
- **需要示例参考** → 请我读取 `examples/demo_analyze.md`
### 阶段二:Plan
- **需要计划模板** → 请我读取 `references/plan_template.md`
- **需要测试类型详细指标** → 请我读取 `references/test_types_detail.md`
- **需要测试策略指南** → 请我读取 `references/test_strategy.md`
- **需要行业标准参考** → 请我读取 `references/industry_standards.md`
- **需要示例参考** → 请我读取 `examples/demo_plan.md`
### 阶段三:TestOutline
- **需要大纲模板** → 请我读取 `references/outline_template.md`
- **需要示例参考** → 请我读取 `examples/demo_outline.md`
### 阶段四:TestCase
- **需要用例模板(通用)** → 请我读取 `references/test_case_template.md`
- **需要功能测试用例模板** → 请我读取 `references/test_case_templates.md#functional`
- **需要UI/UX测试用例模板** → 请我读取 `references/test_case_templates.md#ui-ux`
- **需要兼容性测试用例模板** → 请我读取 `references/test_case_templates.md#compatibility`
- **需要性能测试用例模板** → 请我读取 `references/test_case_templates.md#performance`
- **需要安全测试用例模板** → 请我读取 `references/test_case_templates.md#security`
- **需要无障碍测试用例模板** → 请我读取 `references/test_case_templates.md#accessibility`
- **需要穷举测试点方法** → 请我读取 `references/test_case_generation_guide.md`
- **需要等价类划分法详解** → 请我读取 `references/test_case_generation_guide.md#equivalence`
- **需要边界值分析法详解** → 请我读取 `references/test_case_generation_guide.md#boundary`
- **需要场景法详解** → 请我读取 `references/test_case_generation_guide.md#scenario`
- **需要决策表法详解** → 请我读取 `references/test_case_generation_guide.md#decision`
- **需要覆盖度检查清单** → 请我读取 `references/test_case_generation_guide.md#checklist`
- **需要示例参考** → 请我读取 `examples/demo_testcase.md`
### 获取需求来源
- **获取Jira的完整需求描述** → 运行脚本:`uv run python scripts/parse_jira_issue.py <JIRA_ISSUE>`
---
## 持续进化
### 用户反馈学习
当用户提出改进建议时,记录到 `evolution/feedback.json`(保持 JSON 格式一致):
```json
{
"entries": [
{
"id": "ALL",
"feedback_type": "encoding",
"comment": "CSV中文显示乱码,使用UTF-8 with BOM编码",
"timestamp": "2026-04-27T10:00:00",
"resolved": false
}
]
}
```
- 若反馈适用于所有场景,`id` 填 `"ALL"`
- 若反馈针对特定用例,`id` 填对应用例ID(如 `TC-FUNC-LOGIN-001`)
- 类型字段可填:`encoding`/`missing`/`redundant`/`unclear`/`wrong_category`
### 预防措施自动应用
每次生成测试用例前,读取 `evolution/feedback.json` 中 `id == "ALL"` 的条目作为预防措施规则。
### 查询进化统计
`uv run python evolution/evolve.py status`
---
## 快速参考
### 常用命令
| 场景 | 命令 |
|------|------|
| 开始新功能测试 | "帮我设计[功能名称]的测试" |
| 继续Plan | "基于[Analyze名称]生成Plan" |
| 继续TestOutline | "基于[Plan名称]生成TestOutline" |
| 继续TestCase | "基于[TestOutline名称]生成TestCase" |
| 查看模板 | "请我读取references/[模板名]" |
| 查看示例 | "请我读取examples/demo_[阶段名]" |
---
## 重要原则
1. **迭代确认**:每个阶段必须等待用户确认后才进入下一阶段
2. **不过度设计**:保持精简,避免一开始就追求完美
3. **边界先行**:先识别边界条件和异常情况
4. **可执行性**:测试用例必须步骤清晰、预期结果可验证
5. **Markdown输出**:所有文档使用Markdown格式,便于后续使用
6. **简洁门禁**:每个阶段输出后自检——"这些内容对当前阶段是否必要?删掉不增值的部分"。如果描述比实现还复杂,说明过度设计了。
---
## 常见反模式
❌ **不要这样做**:
- 用户说"直接出用例吧"就跳过Analyze和Plan阶段,放弃结构化流程
- 需求不确定时跳过Analyze直接写Plan
- 测试大纲只列正常流程,忽略异常和边界
- 测试用例写了"功能正常"而非具体预期结果
- 一个测试用例包含多个不相关的验证点
- 测试用例ID命名混乱,无法追溯需求
View on GitHub