AI 时代下,测试用例正在从“开发辅助物”变成“核心生产资料”。当代码生成越来越便宜,真正稀缺的就不再只是实现能力,而是对正确性的定义能力。谁更理解需求,谁能更精准地写出测试,谁就更能主导软件的产出质量与演进方向。


为什么?

过去很长一段时间里,软件行业默认的核心资产是代码本身。团队规模、工程年限、架构复杂度、底层实现细节,构成了主要壁垒。但 AI 的出现,正在改写这个前提。

今天,越来越多的软件事实正在指向同一个变化:实现成本在快速下降,验证成本却在快速上升。

代码可以批量生成,重构可以被自动完成,跨语言迁移也越来越廉价;但系统应该如何工作、边界条件是什么、什么才算兼容、什么才算通过验收,仍然必须被明确定义。而测试用例,恰恰就是这种定义最直接、最可执行、也最容易被机器消费的表达形式。

换句话说,AI 让实现越来越像体力活,而让测试越来越像智力活。


案例一:vinext——一周复刻 Next.js

Cloudflare 工程师 Steve Faulkner 用 AI 在一周内重新实现了 Next.js,项目名为 vinext。官方披露的数据是:API 覆盖率达到 94%,构建速度最高提升 4.4 倍,客户端包体积最高缩小 57%,总 Token 成本约 1,100 美元。

这件事最关键的地方,不是“AI 写了很多代码”,而是它为什么能写出来。Cloudflare 自己给出的答案很明确:Next.js 的行为边界足够清晰,文档完善,测试充分,很多测试还可以直接移植。于是 AI 不需要从零猜测“正确答案”,只需要不断迭代,直到行为通过验证。

Steve Faulkner 的一句话很有代表性:

We took an API contract, a build tool, and an AI model, and the AI wrote everything in between.

这里真正重要的不是“AI 写了一切”,而是 API contract——也就是一套可以验证的行为边界。AI 之所以能高效生成代码,不是因为它天然知道答案,而是因为“什么叫对”已经被定义清楚了。

从这个角度看,测试不再只是质量保障手段,而是在 AI 时代承担了“正确性说明”的作用。事实上,这并不只是一个比喻。在很多成熟技术生态里,测试本来就是基础设施的一部分:例如 TC39 的 Test262 是 ECMAScript 的官方一致性测试套件;web-platform-tests 用来验证跨浏览器兼容;WebAssembly 官方仓库更是直接把 specification、reference implementation 和 official test suite 放在一起。它们共同说明:真正能落地“什么叫对”的,往往不是一段文字,而是可运行、可复现、可比较的测试。


案例二:CCC——测试驱动 AI 从零构建编译器

Anthropic 的 CCC(Claude’s C Compiler)把这个逻辑推进得更远。Nicholas Carlini 让 16 个 Claude Opus 4.6 实例并行协作,在两周内从零用 Rust 写出了一个完整的 C 编译器:约 10 万行代码,能编译 Linux 6.9 内核,总成本约 20,000 美元。

更重要的是,人类几乎没有参与编码本身。Carlini 的主要工作,是搭建测试、组织验证环境、设置反馈回路,让 Claude 围绕测试持续推进。

他在官方文章中的一句话非常关键:

A human guided some of this process by writing test cases that Claude was told to pass, but never interactively pair-programmed with Claude to debug or to provide feedback on code quality.

这几乎可以概括出一种新的分工方式:人类负责定义对错,模型负责寻找实现。

CCC 的意义不在于“AI 已经会写编译器”,而在于:当项目足够复杂时,人类最重要的工作不再只是继续手写代码,而是设计验证体系、拆分任务、定义通过条件。AI 的效率上限,越来越取决于测试设计的质量。


案例三:SQLite——测试早就是核心资产

如果说 vinext 和 CCC 代表的是 AI 时代的新变化,那么 SQLite 则说明:测试作为核心资产,并不是新概念,只是在 AI 时代被重新放大了。

根据 SQLite 官方文档,SQLite 核心代码约 15.6 万行,而测试代码与测试脚本总量约 9205 万行,是核心代码的 590 倍。其测试体系包括 TCL Tests、TH3、sqllogictest、dbsqlfuzz 等多个相互独立的框架。

其中最典型的是 TH3:它是 SQLite 的专有测试套件,只使用对外公开接口进行验证,提供 100% branch coverage 与 100% MC/DC 级别的覆盖能力,而且本身就是可商业化资产。

这说明,SQLite 真正难以复制的,不只是数据库内核本身,更是那套长期积累出来的验证系统。再加上 sqllogictest 这样的跨数据库一致性验证工具,以及 dbsqlfuzz 这样的专有模糊测试体系,可以更清楚地看到:软件的高可靠性,并不是来自“代码写得多优雅”,而是来自“行为被验证得多彻底”。


为什么测试会从“辅助物”变成“核心资产”

1. AI 压低了实现成本,却抬高了验证价值

维度 AI 之前 AI 之后
代码实现成本 快速下降
行为验证成本 相对次要 快速上升
稀缺能力 写出实现 定义正确性
核心产出 代码 测试 + 验证

过去,一个团队最贵的是“写出来”;现在,一个团队越来越贵的是“写对了,而且能证明写对了”。

测试的重要性因此被系统性抬升:它既是质量工具,也是生产工具;既服务于人类协作,也服务于 AI 执行;既能回归验证,也能充当“正确性”的外部标准。

2. 测试是最适合被机器消费的“正确性定义”

自然语言 PRD 往往模糊、冗长、存在歧义;代码实现又往往混杂工程妥协和历史包袱。相比之下,测试用例有一个天然优势:它是可执行的。

对 AI 来说,可执行就意味着可反馈、可迭代、可优化。Anthropic 在 Building effective agents 一文中就明确指出,代码任务之所以特别适合 agent,一个关键原因就是:代码解法可以通过自动化测试来验证。换句话说,AI 之所以能在工程任务里形成闭环,不是因为模型天然可靠,而是因为外部存在一套可以不断给出真值反馈的测试系统。

这也是为什么 Cloudflare 能够在 vinext 中快速建立兼容性,Anthropic 能够在 CCC 中让多 Agent 持续协作,SQLite 能够通过多年测试积累换来极高可靠性——因为测试把“正确性”从抽象判断,变成了可运行的判定器。

3. 测试不仅验证功能,更沉淀长期知识

高质量测试套件里封装的,不只是输入输出关系,还包括:

  • 用户真正关心的关键路径;
  • 历史 Bug 暴露出来的边界条件;
  • 接口兼容性的真实含义;
  • 性能、异常、容错、降级的实际要求;
  • 一个团队多年工程判断沉淀下来的经验。

因此,测试不是“代码的附属物”,而是经验的压缩包、知识的沉淀结果、组织判断力的固化形态


小结:用测试用例驱动,是 AI 时代下的工程新范式

传统工程范式里,工程师的核心价值是理解需求,再把需求翻译成代码实现。

但在 AI 时代,代码实现会越来越便宜,“什么才是对的”反而越来越稀缺。最关键的工作开始转向:理解需求、定义行为、产出测试。

理解用户需求,并高效、精准地产出测试用例,将成为 AI 时代下工程师的核心能力,也会成为 AI 工程师最核心的职责。 CCC 和 vinext 都说明了这一点:真正决定成败的,不是 AI 会不会继续写,而是有没有一套足够清晰的测试来界定“什么叫成功”。

这或许就是下一代的软件工程新范式:工程师不再主要扮演代码书写者,而是扮演需求理解者、测试设计者和验证系统设计者。 AI 可以写出越来越多的代码,但“什么才是对的”,最终仍然要由人来定义。


参考来源

  1. Cloudflare Blog: How we rebuilt Next.js with AI in one week
  2. GitHub: cloudflare/vinext
  3. Anthropic Engineering: Building a C compiler with a team of parallel Claudes
  4. GitHub: anthropics/claudes-c-compiler
  5. SQLite: How SQLite Is Tested
  6. SQLite: TH3 Test Harness
  7. SQLite: sqllogictest
  8. GCC Internals: Torture Tests
  9. The Pragmatic Engineer: Cloudflare rewrites Next.js as AI rewrites commercial open source
  10. Hacktron: Vibe-Hacking Cloudflare’s Vibe-Coded Next.js Replacement
  11. tldraw Issue #8082: Move tests to closed source repo
  12. Simon Willison: Closed tests
  13. LBZ Advisory: Data Moats Are Dead: The New Competitive Advantages in an AI-Everything Era
  14. Martin Fowler / Ham Vocke: The Practical Test Pyramid
  15. Google OSS-Fuzz
  16. Anthropic: Building effective agents
  17. TC39 Test262
  18. web-platform-tests
  19. WebAssembly spec repository
  20. WebAssembly official test suite README
  21. SQLite Requirements
  22. SWE-bench
  23. SWE-bench Leaderboard