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

Red/Green TDD — 内容总结

2 个章节 · 0 条产出 · 0 条证据
2026-04-16

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”才会执行而非仅输出代码

实践建议

  • 在给 AI 编码智能体的 prompt 中加入 “Use red/green TDD”
  • 确保智能体展示了测试失败的红色阶段
  • 将此模式作为与编码智能体协作的默认工作流
  • 利用积累的测试套件作为项目增长的安全防线

Red/Green TDD — 中文逐字稿

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)这句话才能真正执行代码和测试,而不仅仅是写出代码。

infographic

Create a professional infographic following these specifications:

Image Specifications

  • Type: Infographic
  • Layout: linear-progression
  • Style: technical-schematic
  • Aspect Ratio: landscape (16:9)
  • Language: zh (Chinese)

Core Principles

  • Follow the layout structure precisely for information architecture
  • Apply style aesthetics consistently throughout
  • Keep information concise, highlight keywords and core concepts
  • Use ample whitespace for visual clarity
  • Maintain clear visual hierarchy

Layout Guidelines (Linear Progression)

  • Sequential flow from left to right or top to bottom
  • Clear step markers with numbers or icons
  • Connected by arrows or flow lines
  • Each step has a title and brief description
  • Visual distinction between RED phase and GREEN phase

Style Guidelines (Technical Schematic)

  • Primary: Blues (#2563EB), teals, grays, white lines
  • Background: Deep blue (#1E3A5F) with subtle grid pattern
  • RED phase: Use red (#E74C3C) for test failure indicators
  • GREEN phase: Use green (#2ECC71) for test pass indicators
  • Accents: Amber highlights (#F59E0B), cyan callouts
  • Geometric precision throughout
  • Technical stencil or clean sans-serif typography
  • Clean vector shapes, consistent stroke weights

Generate the infographic based on the content below:

Title: Red/Green TDD

Subtitle: AI 编码智能体的测试驱动开发模式

Source: Simon Willison · Agentic Engineering Patterns

Flow Steps:

Step 1 — RED 阶段 (测试失败)

  • 先编写自动化测试
  • 运行测试,确认测试失败
  • 这一步不可跳过!跳过 = 无效测试

Step 2 — GREEN 阶段 (测试通过)

  • 实现代码
  • 运行测试,确认测试通过
  • 代码只做让测试通过的最小实现

Core Insight Box:

“Use red/green TDD” — 五个字就够了 所有主流大模型都理解这个简写指令

Why TDD for AI Agents? (Side panel)

问题(没有 TDD 时):

  • AI 可能写出不工作的代码
  • AI 可能写出不必要的代码
  • 无法积累回归测试

解决(有 TDD 时):

  • 测试验证代码确实可用
  • 测试约束代码只做需要的事
  • 自动积累回归测试套件

Example Prompt:

“Build a Python function to extract headers from a markdown string. Use red/green TDD.”

Note:

Claude 可直接执行,ChatGPT 需额外加 “Use your code environment”

Text labels (in Chinese):

  • 主标题: Red/Green TDD
  • 副标题: AI 编码智能体的测试驱动开发模式
  • RED 阶段: 先写测试 → 确认失败
  • GREEN 阶段: 实现代码 → 测试通过
  • 核心洞察: “Use red/green TDD” 五个字 = 完整指令
  • 侧栏标题: 为什么 AI 编码更需要 TDD?
  • 示例提示词标签: 万能 Prompt