BMAD-METHOD/docs/enhanced-ide-development-wo...

249 lines
8.9 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.

# 增强的IDE开发工作流
这是一个简单的分步指南可帮助您使用BMad方法高效地管理开发工作流。该工作流在整个开发生命周期中集成了测试架构师QA代理以确保质量、防止回归并保持高标准。有关此处未涵盖的任何场景请参阅**[<ins>用户指南</ins>](user-guide.md)**。
## 创建新分支
1. **启动新分支**
## 故事创建Scrum Master
1. **开始新的聊天/对话**
2. **加载SM代理**
3. **执行**`*draft`运行create-next-story任务
4. **审查生成的故事**,位于`docs/stories/`
5. **更新状态**:将状态从“草稿”更改为“已批准”
## 故事实施(开发人员)
1. **开始新的聊天/对话**
2. **加载开发代理**
3. **执行**`*develop-story {selected-story}`运行execute-checklist任务
4. **审查生成的报告**,位于`{selected-story}`
## 在整个工作流中集成测试架构师
测试架构师Quinn在整个开发生命周期中提供全面的质量保证。以下是如何在适当的时候利用每项功能。
**命令别名:** 文档使用简写形式(`*risk`, `*design`, `*nfr`, `*trace`)来表示完整命令(`*risk-profile`, `*test-design`, `*nfr-assess`, `*trace-requirements`)。
### 快速命令参考
| **阶段** | **命令** | **目的** | **输出** | **优先级** |
| --- | --- | --- | --- | --- |
| **故事批准后** | `*risk` | 识别集成和回归风险 | `docs/qa/assessments/{epic}.{story}-risk-{YYYYMMDD}.md` | 对于复杂/棕地项目为高 |
| | `*design` | 为开发创建测试策略 | `docs/qa/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md` | 对于新功能为高 |
| **开发期间** | `*trace` | 验证测试覆盖率 | `docs/qa/assessments/{epic}.{story}-trace-{YYYYMMDD}.md` | 中 |
| | `*nfr` | 验证质量属性 | `docs/qa/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md` | 对于关键功能为高 |
| **开发后** | `*review` | 全面评估 | 故事中的QA结果 + `docs/qa/gates/{epic}.{story}-{slug}.yml` | **必需** |
| **审查后** | `*gate` | 更新质量决策 | 更新的 `docs/qa/gates/{epic}.{story}-{slug}.yml` | 根据需要 |
### 阶段1故事创建后开发开始前
**推荐 - 为开发人员的成功做好准备:**
```bash
# 1. 风险评估(对于复杂的故事首先运行)
@qa *risk {approved-story}
# 识别:
# - 技术债务影响
# - 集成复杂性
# - 回归可能性1-9评分
# - 缓解策略
# 对于以下情况至关重要棕地、API更改、数据迁移
# 2. 测试设计(其次运行以指导实施)
@qa *design {approved-story}
# 提供:
# - 每个验收标准的测试场景
# - 测试级别建议(单元/集成/E2E
# - 基于风险的优先级P0/P1/P2
# - 测试数据要求
# 与开发人员共享:包含在故事评论中或附加到工单
```
### 阶段2开发期间实施中期检查点
**开发人员自助质量检查:**
```bash
# 3. 需求跟踪(在开发中期验证覆盖率)
@qa *trace {story-in-progress}
# 验证:
# - 所有验收标准都有测试
# - 没有遗漏的测试场景
# - 适当的测试级别
# - Given-When-Then文档的清晰度
# 运行时机:编写初始测试后
# 4. NFR验证检查质量属性
@qa *nfr {story-in-progress}
# 评估:
# - 安全性:身份验证、授权、数据保护
# - 性能:响应时间、资源使用
# - 可靠性:错误处理、恢复
# - 可维护性:代码质量、文档
# 运行时机:标记“准备审查”之前
```
### 阶段3故事审查质量门评估
**必需 - 全面的测试架构审查:**
**先决条件:** 所有测试在本地通过lint和类型检查通过。
```bash
# 5. 全面审查(标准审查流程)
@qa *review {completed-story}
```
**审查期间会发生什么:**
1. **深度代码分析**
- 架构模式合规性
- 代码质量和可维护性
- 安全漏洞扫描
- 性能瓶颈检测
2. **主动重构**
- 在安全的情况下直接改进代码
- 立即修复明显的问题
- 为开发人员建议复杂的重构
3. **测试验证**
- 所有级别的覆盖率(单元/集成/E2E
- 测试质量(无不稳定测试、正确的断言)
- 回归测试的充分性
4. **门禁决策**
- 创建:`docs/qa/gates/{epic}.{story}-{slug}.yml`
- 添加QA结果部分到故事文件
- 状态PASS/CONCERNS/FAIL/WAIVED
### 阶段4审查后解决问题后
**修复后更新门禁状态:**
```bash
# 6. 门禁更新(记录最终决策)
@qa *gate {reviewed-story}
# 更新:带有新状态的质量门禁
# 使用时机:解决审查反馈后
# 记录:修复了什么,豁免了什么
```
### 理解门禁决策
| **状态** | **含义** | **所需操作** | **可以继续吗?** |
| --- | --- | --- | --- |
| **PASS** | 所有关键要求均已满足 | 无 | ✅ 是 |
| **CONCERNS** | 发现非关键问题 | 建议团队审查 | ⚠️ 谨慎 |
| **FAIL** | 关键问题安全、缺少P0测试 | 必须修复 | ❌ 否 |
| **WAIVED** | 问题已确认并接受 | 记录理由 | ✅ 经批准 |
### 基于风险的测试策略
测试架构师使用风险评分来确定测试的优先级:
| **风险评分** | **计算** | **测试优先级** | **门禁影响** |
| --- | --- | --- | --- |
| **9** | 高概率 × 高影响 | P0 - 必须彻底测试 | 如果未测试则FAIL |
| **6** | 中高组合 | P1 - 应充分测试 | 如果有差距则CONCERNS |
| **4** | 中等组合 | P1 - 应测试 | 如果有显著差距则CONCERNS |
| **2-3** | 中低组合 | P2 - 最好有 | 在审查中注明 |
| **1** | 风险极小 | P2 - 最低限度 | 在审查中注明 |
### 特殊情况与最佳实践
#### 高风险或棕地故事
```bash
# 始终运行此序列:
@qa *risk {story} # 首先 - 识别危险
@qa *design {story} # 其次 - 规划防御
# 然后在开发期间:
@qa *trace {story} # 验证回归覆盖率
@qa *nfr {story} # 检查性能影响
# 最后:
@qa *review {story} # 深度集成分析
```
#### 复杂集成
- 在开发期间多次运行`*trace`
- 关注集成测试覆盖率
- 使用`*nfr`验证跨系统性能
- 在审查时特别关注API合约
#### 性能关键功能
- 尽早并经常运行`*nfr`(不仅仅是在审查时)
- 在更改前建立性能基线
- 记录可接受的性能下降
- 在`*design`中考虑负载测试要求
### 强制执行的测试质量标准
Quinn确保所有测试都符合这些标准
- **无不稳定测试**:正确的异步处理、明确的等待
- **无硬等待**:仅使用动态策略(轮询、事件)
- **无状态**:测试独立并行运行
- **自清理**:测试管理自己的测试数据
- **适当的级别**单元测试用于逻辑集成测试用于交互E2E测试用于流程
- **清晰的断言**:将断言保留在测试中,而不是埋在辅助函数里
### 文档与审计跟踪
所有测试架构师的活动都会创建永久记录:
- **评估报告**:位于`docs/qa/assessments/`的带时间戳的分析
- **门禁文件**:位于`docs/qa/gates/`的决策记录
- **故事更新**故事文件中的QA结果部分
- **可追溯性**:保持需求到测试的映射
## 提交更改并推送
1. **提交更改**
2. **推送到远程**
## 完整的开发周期流程
### 带有测试架构师的完整工作流
1. **SM**:创建下一个故事 → 审查 → 批准
2. **QA可选**:风险评估(`*risk`)→ 测试设计(`*design`
3. **开发**:实施故事 → 编写测试 → 完成
4. **QA可选**:开发中期检查(`*trace`, `*nfr`
5. **开发**:标记为准备审查
6. **QA必需**:审查故事(`*review`)→ 门禁决策
7. **开发(如果需要)**:解决问题
8. **QA如果需要**:更新门禁(`*gate`
9. **提交**:所有更改
10. **推送**:到远程
11. **继续**:直到所有功能实施完毕
### 快速决策指南
**我应该运行测试架构师命令吗?**
| **场景** | **开发前** | **开发中** | **开发后** |
| --- | --- | --- | --- |
| **简单错误修复** | 可选 | 可选 | 必需 `*review` |
| **新功能** | 推荐 `*risk`, `*design` | 可选 `*trace` | 必需 `*review` |
| **棕地更改** | **必需** `*risk`, `*design` | 推荐 `*trace`, `*nfr` | 必需 `*review` |
| **API修改** | **必需** `*risk`, `*design` | **必需** `*trace` | 必需 `*review` |
| **性能关键** | 推荐 `*design` | **必需** `*nfr` | 必需 `*review` |
| **数据迁移** | **必需** `*risk`, `*design` | **必需** `*trace` | 必需 `*review` + `*gate` |
### 成功指标
测试架构师有助于实现:
- 生产中**零回归缺陷**
- **100%需求覆盖率**的测试
- 用于**go/no-go决策**的清晰质量门禁
- **记录在案的技术债务风险接受**
- 团队中**一致的测试质量**
- 通过早期风险识别实现**左移测试**