jixiaxue 知识库
blog / simon-willison-blog / red-green-tdd

Red/Green TDD — 内容总结

2026-02-24

Red/Green TDD — 内容总结

原文:Simon Willison · Agentic Engineering Patterns 系列

一句话总结

在使用 AI 编码智能体时,只需说”使用红/绿 TDD”就能显著提升代码质量——先写测试、确认失败、再实现通过。

核心论点

维度内容
是什么红/绿 TDD = 测试驱动开发的最严格形式:先写测试(红)→ 确认失败 → 实现代码 → 测试通过(绿)
为什么重要编码智能体有两大风险:写出不工作的代码、写出不必要的代码。TDD 同时解决这两个问题
关键细节必须先确认测试失败(红色),否则可能写出”本来就通过”的无效测试
附加价值自动积累回归测试套件,随项目增长持续保护已有功能
实用性”红/绿 TDD” 五个字即可作为 prompt 指令,所有主流大模型都能理解

关键洞察

  1. 简洁即力量:一句”Use red/green TDD”就能替代冗长的测试流程描述,所有优秀模型都理解这个简写
  2. AI 时代的 TDD 价值倍增:TDD 在人类编程中已是最佳实践,在 AI 编码中更是必不可少的”安全网”
  3. 红色阶段不可跳过:先确认失败是整个方法论的核心保障,跳过等于白做
  4. 模型差异:Claude 能直接执行,ChatGPT 需要额外指令”Use your code environment”才会执行而非仅输出代码

实践建议

展开正文

Red/Green TDD — 中文逐字稿

原文来源:Simon Willison’s Weblog 原文链接:https://simonwillison.net/guides/agentic-engineering-patterns/red-green-tdd/ 系列:Agentic Engineering Patterns(智能体工程模式) 标签:testing, tdd, coding-agents, ai-assisted-programming, agentic-engineering


使用红/绿 TDD” 是一种令人愉悦的简洁方式,可以让你从编码智能体(coding agent)中获得更好的结果。

TDD 代表测试驱动开发(Test Driven Development)。这是一种编程风格,要求你编写的每一段代码都配有自动化测试来证明代码是可用的。

TDD 最严格的形式是”测试先行”开发(test-first development)。你先编写自动化测试,确认测试失败,然后反复迭代实现代码,直到测试通过为止。

事实证明,这种方式与编码智能体(coding agents)是绝佳的搭配。编码智能体的一个重大风险是:它们可能写出无法正常工作的代码,或者构建出不必要且永远不会被使用的代码,或者两者兼有。

测试先行开发有助于防范这两种常见错误,同时还能确保拥有一套健壮的自动化测试套件,防止未来的回归缺陷(regression)。随着项目的增长,新变更破坏已有功能的可能性也随之增加。一套全面的测试套件是保持这些功能正常运行的最有效方法。

在实现代码之前,确认测试失败是至关重要的。如果你跳过这一步,你就有可能构建一个已经通过的测试——这意味着测试无法验证你的新实现。

这就是”红/绿”的含义:红色阶段观察测试失败,然后绿色阶段确认测试现在通过了。

每一个优秀的模型都理解”红/绿 TDD”这个简写,它代表了更长的指令:“使用测试驱动开发,先编写测试,在你实现让测试通过的更改之前,确认测试失败”。

示例提示词

构建一个 Python 函数,从 markdown 字符串中提取标题。使用红/绿 TDD。

作者分别用 Claude 和 ChatGPT 进行了测试。值得注意的是,ChatGPT 需要额外附加”使用你的代码环境”(Use your code environment)这句话才能真正执行代码和测试,而不仅仅是写出代码。