# 测试设计 为故事实施创建具有适当测试级别建议的综合测试场景。 ## 输入 ```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遵循命名约定 - [ ] 场景是原子的和独立的 ## 关键原则 - **左移**:优先选择单元测试而非集成测试,集成测试而非端到端测试 - **基于风险**:专注于可能出错的地方 - **有效覆盖**:在正确的级别上测试一次 - **可维护性**:考虑长期的测试维护 - **快速反馈**:首先运行快速测试