BMAD-METHOD/bmad-core/tasks/test-design.md

178 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 由 BMAD™ Core 驱动 -->
# 测试设计
为故事实施创建具有适当测试级别建议的综合测试场景。
## 输入
```yaml
required:
- story_id: '{epic}.{story}' # 例如, "1.3"
- story_path: '{devStoryLocation}/{epic}.{story}.*.md' # 来自core-config.yaml的路径
- story_title: '{title}' # 如果缺少则从故事文件的H1派生
- story_slug: '{slug}' # 如果缺少,则从标题派生(小写,连字符连接)
```
## 目的
设计一个完整的测试策略,确定要测试什么,在哪个级别(单元/集成/端到端),以及为什么。这确保了有效的测试覆盖,避免了冗余,同时保持了适当的测试边界。
## 依赖
```yaml
data:
- test-levels-framework.md # 单元/集成/端到端决策标准
- test-priorities-matrix.md # P0/P1/P2/P3分类系统
```
## 流程
### 1. 分析故事需求
将每个验收标准分解为可测试的场景。对于每个AC
- 确定要测试的核心功能
- 确定需要的数据变体
- 考虑错误条件
- 注意边缘情况
### 2. 应用测试级别框架
**参考:** 加载`test-levels-framework.md`以获取详细标准
**快速规则:**
- **单元**:纯逻辑、算法、计算
- **集成**:组件交互、数据库操作
- **端到端**:关键用户旅程、合规性
### 3. 分配优先级
**参考:** 加载`test-priorities-matrix.md`进行分类
**快速优先级分配:**
- **P0**:收入关键、安全、合规
- **P1**:核心用户旅程、常用
- **P2**:次要功能、管理功能
- **P3**:锦上添花、很少使用
### 4. 设计测试场景
对于每个已识别的测试需求,创建:
```yaml
test_scenario:
id: '{epic}.{story}-{LEVEL}-{SEQ}'
requirement: 'AC参考'
priority: P0|P1|P2|P3
level: unit|integration|e2e
description: '正在测试的内容'
justification: '为什么选择这个级别'
mitigates_risks: ['RISK-001'] # 如果存在风险概况
```
### 5. 验证覆盖范围
确保:
- 每个AC至少有一个测试
- 跨级别没有重复的覆盖范围
- 关键路径有多个级别
- 风险缓解措施已得到处理
## 输出
### 输出1测试设计文档
**保存到:** `qa.qaLocation/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md`
```markdown
# 测试设计:故事 {epic}.{story}
日期:{date}
设计者Quinn测试架构师
## 测试策略概述
- 总测试场景X
- 单元测试Y (A%)
- 集成测试Z (B%)
- 端到端测试W (C%)
- 优先级分布P0: X, P1: Y, P2: Z
## 按验收标准划分的测试场景
### AC1{description}
#### 场景
| ID | 级别 | 优先级 | 测试 | 理由 |
| --- | --- | --- | --- | --- |
| 1.3-UNIT-001 | 单元 | P0 | 验证输入格式 | 纯验证逻辑 |
| 1.3-INT-001 | 集成 | P0 | 服务处理请求 | 多组件流程 |
| 1.3-E2E-001 | 端到端 | P1 | 用户完成旅程 | 关键路径验证 |
[继续所有AC...]
## 风险覆盖
[如果存在风险概况,则将测试场景映射到已识别的风险]
## 推荐的执行顺序
1. P0单元测试快速失败
2. P0集成测试
3. P0端到端测试
4. 按顺序执行P1测试
5. 如果时间允许则执行P2+
```
### 输出2门禁YAML块
生成以包含在质量门禁中:
```yaml
test_design:
scenarios_total: X
by_level:
unit: Y
integration: Z
e2e: W
by_priority:
p0: A
p1: B
p2: C
coverage_gaps: [] # 列出任何没有测试的AC
```
### 输出3跟踪参考
打印以供trace-requirements任务使用
```text
测试设计矩阵qa.qaLocation/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md
已识别的P0测试{count}
```
## 质量清单
在最终确定之前,验证:
- [ ] 每个AC都有测试覆盖
- [ ] 测试级别是适当的(没有过度测试)
- [ ] 跨级别没有重复的覆盖范围
- [ ] 优先级与业务风险保持一致
- [ ] 测试ID遵循命名约定
- [ ] 场景是原子的和独立的
## 关键原则
- **左移**:优先选择单元测试而非集成测试,集成测试而非端到端测试
- **基于风险**:专注于可能出错的地方
- **有效覆盖**:在正确的级别上测试一次
- **可维护性**:考虑长期的测试维护
- **快速反馈**:首先运行快速测试