# 增强的IDE开发工作流 这是一个简单的分步指南,可帮助您使用BMad方法高效地管理开发工作流。该工作流在整个开发生命周期中集成了测试架构师(QA代理),以确保质量、防止回归并保持高标准。有关此处未涵盖的任何场景,请参阅**[用户指南](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决策**的清晰质量门禁 - **记录在案的技术债务风险接受** - 团队中**一致的测试质量** - 通过早期风险识别实现**左移测试**