【译】先运行测试
原文:Simon Willison,First run the tests,发表于 2026 年 2 月 24 日。本文为中文译文。
使用编码 Agent(Coding Agent)工作时,自动化测试已经不再是可选项。
过去,不写测试的借口是:编写测试很耗时,而且在代码库快速演进时,反复重写测试的代价很高。但当 Agent 只需几分钟就能把测试调整妥当时,这些借口就不再成立了。
测试对于确保 AI 生成的代码确实能做到它声称能做的事,也至关重要。如果代码从未被执行过,那么部署到生产环境后还能正常工作,就纯粹是运气了。
测试也是帮助 Agent 快速熟悉现有代码库的好工具。留意一下,当你向 Claude Code 或类似工具询问某项已有功能时会发生什么:它们很可能会找到并阅读相关测试。
Agent 本来就倾向于做测试,但项目中已有一套测试,几乎肯定会促使 Agent 对它所做的新改动进行测试。
每当我针对一个已有项目开启新的 Agent 会话时,都会先用下面这句话的某种变体作为提示词:
First run the tests(先运行测试)
对于我的 Python 项目,我已经配置好了 pyproject.toml,因此也可以改用下面这句提示词:
Run "uv run pytest"(运行uv run pytest)
这些只有四个英文单词的提示词有几方面的作用:
- 它告诉 Agent,项目中有一套测试,并迫使它弄清楚如何运行这些测试。这几乎能确保 Agent 今后也会运行测试,以确认自己没有破坏任何东西。
- 大多数测试框架(test harness)都会让 Agent 大致了解测试的数量。这个数量可以作为衡量项目规模和复杂程度的间接指标,也暗示 Agent:如果想进一步了解项目,就应该去搜索测试本身。
- 它让 Agent 进入测试思维。运行过测试之后,Agent 自然会在后续加入自己编写的测试,进一步扩充测试套件。
和“Use red/green TDD”(使用 red/green TDD)一样,“First run the tests”(先运行测试)也是一句只有四个英文单词的提示词,却涵盖了模型中早已内置的大量软件工程规范。