TDD Workflow 是一套围绕测试驱动开发(Test-Driven Development)的工作流原则,核心理念是「先写测试,再写代码」。
一、TDD 循环 工作流遵循 RED-GREEN-REFACTOR 循环:
- 🔴 RED:编写一个会失败的测试
- 🟢 GREEN:编写最小代码让测试通过
- 🔵 REFACTOR:改进代码质量
- 然后重复该循环。
二、TDD 三定律
- 只为让失败的测试通过而编写生产代码;
- 只编写足以展示失败的测试;
- 只编写足以让测试通过的代码。
三、RED 阶段原则 关注点包括:行为(如「should add two numbers」)、边界情况(如「should handle empty input」)、错误状态(如「should throw for invalid data」)。RED 阶段规则:测试必须先失败;测试名称描述预期行为;理想情况下每个测试一个断言。
四、GREEN 阶段原则 最小代码原则包括:YAGNI(You Aren't Gonna Need It)、最简单实现、不做优化。GREEN 阶段规则:不写不需要的代码;暂不优化;让测试通过即可,不多做。
五、REFACTOR 阶段原则 可改进的方面:重复代码(提取公共代码)、命名(让意图清晰)、结构(改进组织)、复杂度(简化逻辑)。REFACTOR 规则:所有测试必须保持绿色;小步增量修改;每次重构后提交。
六、AAA 模式 每个测试遵循:Arrange(准备测试数据)、Act(执行被测代码)、Assert(验证预期结果)。
七、何时使用 TDD
- 新功能:价值高
- Bug 修复:价值高(先写测试)
- 复杂逻辑:价值高
- 探索性开发:价值低(先做 spike,再 TDD)
- UI 布局:价值低
八、测试优先级
- 正常路径(Happy path)
- 错误情况
- 边界情况
- 性能
九、反模式
- 不要跳过 RED 阶段,要观察测试先失败
- 不要事后补测试,要在写代码前写测试
- 不要一开始就过度设计,保持简单
- 不要多个断言,每个测试一个行为
- 不要测试实现细节,要测试行为
十、AI 增强的 TDD 多智能体模式:Agent A 编写失败测试(RED);Agent B 实现以通过测试(GREEN);Agent C 进行优化(REFACTOR)。
核心理念:测试就是规格说明。如果写不出测试,说明你还不理解需求。