| name | test-driven-development |
| description | 新功能、bug 修复、重构或行为变化需要测试先行时使用。强调先写失败测试、确认失败原因、最小实现和保持测试绿色。 |
Test-Driven Development
参考来源: https://github.com/obra/superpowers/tree/main/skills/test-driven-development
本 skill 是本仓库的精简版本,只保留适合 agent 执行的 TDD 规则,不复制外部 skill 全文。
何时使用
例外情况需要先和用户确认,例如一次性原型、生成代码、纯配置整理或没有可测试行为的文档修改。
核心规则
- 先写一个最小失败测试。
- 运行测试,确认它失败且失败原因正确。
- 写最少生产代码让测试通过。
- 再运行测试,确认相关测试全部通过。
- 只有绿色后才重构。
- 重构不能引入新行为;新行为需要新的失败测试。
- 一次只推进一个垂直切片:一个可观察行为、一个失败测试、一个最小实现。
Red Test Gate
新功能、bug 修复、重构引起行为变化、公共 API 变化和用户流程变化,必须先写失败测试并运行确认失败原因正确,才能写行为实现代码。
如果当前任务确实没有可测试行为,先记录原因,并给出替代验证方式,例如脚本 smoke test、文档 diff 检查、人工验收步骤或 harness 验证命令。
垂直切片纪律
- 从最小用户可观察行为开始,不先铺完整测试矩阵。
- 每轮 RED/GREEN/REFACTOR 都应能独立运行和回退。
- 新边界条件必须回到 RED,不能混在当前 GREEN 实现里顺手完成。
- 如果发现需要多个测试才能描述同一功能,先选择风险最高或最能定义接口的一个。
- 不为未来扩展预写测试;只有当前需求明确的行为才进入本轮。
RED
- 测试名称描述真实行为。
- 每个测试只覆盖一个行为。
- 优先测试公开 API 和用户可观察结果。
- mock 只在不可避免时使用,避免测试 mock 本身。
GREEN
- 只实现让当前测试通过所需的最小代码。
- 不顺手扩展未来需求。
- 不在同一步做无关重构。
REFACTOR
- 去重复、改命名、提取 helper。
- 保持测试绿色。
- 如果发现新行为缺口,回到 RED。
完成检查
- 看见测试先失败。
- 失败原因符合预期。
- 最小实现后测试通过。
- 相关测试无错误、无警告。
- 边界条件和错误路径有覆盖。
- 每个新增行为都能追溯到对应失败测试。