今日反直觉:
让编码代理在自身循环内完整遵循 TDD(测试驱动开发)工作流,是否确有实际价值?
Martin Fowler 的网站站上发表了一篇文章,核心内容:
基于一项对照实验(Sonnet 生成方案,Opus 盲评质量)的初步结论:
一、关于收益:TDD 与非 TDD 方案的输出质量未呈现可辨别的显著差异;非 TDD 方案在设计与测试质量评分上反而略占上风。各方案变异测试得分亦无实质差距。
二、关于成本:TDD 工作流因轮次与工具调用显著增加,token 消耗约为非 TDD 的 3~8.5 倍。
三、关于机制:实验显示,非 TDD 与"先测试"方案均在编码前完成整体设计(架构、数据类型、边界条件、契约);而 TDD 的渐进式推进抑制了这一前置设计环节,最终设计往往由局部决策累积而成,且很少被重新审视。此外,测试先行亦无法可靠杜绝"以输出自证输出"的同义反复式断言。
作者结论倾向:与其过度规定代理的执行流程,不如建立对结果的监控与反馈机制——以变异测试衡量回归质量,以静态分析与模块化审查触发重构。
在 GenAI 时代,TDD 在编码流程中的角色或将显著弱化。
原文:
martinfowler.com