--- name: writeTest description: 从上游文档生成 tdd.md,创建覆盖所有功能的测试用例文档。 --- # Write Test Cases > **文档定位**:tdd.md 是测试驱动开发的核心文档,基于 PRD 和功能文档生成结构化测试用例,确保所有功能点有对应的测试覆盖。 当用户调用 `/writeTest` 时,执行以下步骤: ## 1. 读取源文档 读取以下文件: 1. `doc/PRD.md` - 必须存在(功能需求和验收标准的主要来源) 2. `doc/FeatureSummary.md` - 必须存在(功能模块全貌) 3. `doc/DevelopmentPlan.md` - 必须存在(技术方案参考) 4. `doc/tasks.md` - 可选(任务粒度参考) 5. `doc/UIDesign.md` - 可选(界面交互测试参考) 如果必要文件不存在,提示用户: > 缺少必要文档,请先确保 PRD.md、DevelopmentPlan.md 和 FeatureSummary.md 存在。 如果已存在 `doc/tdd.md`,同时读取作为参考(保持风格一致)。 ## 2. 分析测试需求 从上游文档中提取以下信息: ### 2.1 功能测试点 - 从 PRD 的用户故事和验收标准提取功能测试点 - 从 FeatureSummary 的功能模块提取模块级测试点 ### 2.2 边界与异常场景 - 分析各功能的边界条件 - 识别异常输入和错误处理场景 ### 2.3 非功能测试点 - 从 PRD 非功能需求提取性能、安全、兼容性测试点 ## 3. 生成 tdd.md 按以下结构生成文档: ```markdown # {产品名称} - 测试用例文档 (TDD) ## 文档信息 | 项目 | 内容 | |------|------| | 版本 | v1.0 | | 创建日期 | {YYYY-MM-DD} | | 来源文档 | PRD.md, FeatureSummary.md | ## 1. 测试总览 | 统计项 | 数量 | |--------|------| | 总用例数 | X | | 功能测试 | X | | 边界测试 | X | | 异常测试 | X | | 非功能测试 | X | ## 2. {模块名称} 测试 ### 2.1 {功能名称} | ID | 测试用例 | 前置条件 | 测试步骤 | 预期结果 | 优先级 | 关联用户故事 | |----|----------|----------|----------|----------|--------|--------------| | TC-001 | {用例名} | {前置条件} | {步骤} | {预期结果} | P0 | US-001 | {重复以上结构覆盖所有模块和功能} ## N. 非功能测试 ### N.1 性能测试 | ID | 测试用例 | 测试条件 | 预期指标 | 优先级 | |----|----------|----------|----------|--------| | TC-xxx | {用例名} | {条件} | {指标} | P0/P1 | ### N.2 安全测试 | ID | 测试用例 | 测试方法 | 预期结果 | 优先级 | |----|----------|----------|----------|--------| | TC-xxx | {用例名} | {方法} | {结果} | P0/P1 | ## 附录:测试覆盖矩阵 | 用户故事 | 功能测试 | 边界测试 | 异常测试 | 覆盖状态 | |----------|----------|----------|----------|----------| | US-001 | TC-001 | TC-xxx | TC-xxx | ✅ | ``` ## 4. 保存文档 将生成的测试用例文档保存到 `doc/tdd.md`。 如果文件已存在,覆盖原文件(历史版本通过 git 追溯)。 ## 5. 输出摘要 向用户展示生成摘要: - tdd.md 文件路径 - 测试用例总数 - 各模块用例分布 - 测试覆盖率概览 - 建议的下一步操作(运行‘wt’生成开发任务文档) --- ## 注意事项 - 测试用例必须覆盖 PRD 中所有用户故事的验收标准 - 用例 ID 必须唯一(TC-001, TC-002...) - 每个用例必须有明确的预期结果 - 优先级与对应功能优先级一致(P0 功能 → P0 测试) - 关注边界条件和异常路径,不仅仅是正向流程 - 测试步骤要具体可执行,无歧义 ## 与其他 Skill 的关系 | 场景 | 使用方式 | |------|----------| | 准备上游文档 | `/wp` `/wf` `/wd` `/wu` `/wt` | | 生成测试用例(本 Skill) | `/writeTest` | | 执行开发(含测试) | `/go` | | 迭代后更新测试 | `/iter` 后重新运行 `/writeTest` |