让 AI 编程助手手动测试代码

指南Simon Willison2026年3月6日4 分钟阅读
AI 编程助手能执行自己写的代码,但自动测试通过不代表万事大吉。作者发现让助手进行手动测试(Manual Testing)同样重要,常能发现自动化测试遗漏的问题。

AI 编程助手(Coding Agent)的核心能力是能执行自己写的代码。这比那些只输出代码、无法验证的大语言模型(LLM)有用得多。

永远不要假设 LLM 生成的代码能直接运行,除非它真的被执行过。

编程助手有能力确认自己写的代码是否按预期工作,或者不断迭代直到成功。让助手写单元测试(尤其是测试驱动开发 TDD)是确保代码被充分执行的好方法,但这还不够。

代码通过测试,不代表它真的能正常工作。做过自动化测试的开发者都见过这种情况:测试全绿,但代码本身却有问题——可能启动时就崩溃,关键 UI 元素没显示,或者某些细节测试没覆盖到。

自动化测试不能替代手动测试(Manual Testing)。在功能上线前,我喜欢亲眼看到它跑起来。让助手进行手动测试也很有价值,经常能发现自动化测试没捕捉到的问题。

手动测试的几种方法

助手如何“手动”测试代码,取决于代码的类型。

对于 Python 库,一个有用的模式是 python -c "... code ..."。你可以直接把一段(或多行)Python 代码传给解释器执行,包括导入其他模块的代码。编程助手们都熟悉这个技巧,有时不用提醒也会用。但提示它们用 python -c 测试通常很有效。

其他语言可能有类似的机制。如果没有,让助手写个演示文件然后编译运行也很简单。我有时会建议它用 /tmp 目录,避免这些文件不小心被提交到仓库(Repository)。

我的很多项目是构建带 JSON API 的 Web 应用。对于这些,我告诉助手用 curl 来测试:

code
curl -X POST http://localhost:8000/api/endpoint -H "Content-Type: application/json" -d '{"key": "value"}'

让助手去“探索”(explore),它往往会尝试新 API 的多个方面,能快速覆盖大量场景。

如果助手在手动测试中发现有问题,我喜欢让它用红绿 TDD 来修复。这样能确保新情况被永久性的自动化测试覆盖。

用浏览器自动化测试 Web UI

如果项目涉及交互式 Web UI,手动测试流程就更重要了。

历史上这类测试很难用代码完成,但过去十年,自动化真实浏览器的系统有了显著改进。用真实的 Chrome、Firefox 或 Safari 浏览器跑应用,能在真实环境中发现各种有趣的问题。编程助手非常擅长使用这些工具。

目前最强大的是 Playwright,一个由微软开发的开源库。Playwright 提供了功能完整的 API,支持多种流行编程语言,能自动化所有主流浏览器引擎。

直接告诉助手“用 Playwright 测试”可能就够了。助手会选择最合适的语言绑定,或者使用 Playwright 的 playwright-cli 工具。

编程助手和专用 CLI 配合得很好。Vercel 开发的 agent-browser 就是一个围绕 Playwright 的全面 CLI 包装,专为编程助手设计。

我自己的项目 Rodney 也类似,不过它使用 Chrome DevTools 协议直接控制 Chrome 实例。以下是我用来测试的提示(Prompt):

code
Test the new feature manually using Rodney. Use `uvx rodney --help` to learn how to use it. Look at screenshots to confirm it looks right.

这个提示里有三个技巧:

  • “用 uvx rodney --help”会让助手通过 uvx 包管理工具运行 rodney --help,uvx 会在第一次调用时自动安装 Rodney。
  • rodney --help 命令是专门设计的,让助手能理解和使用这个工具。这是完整的帮助文本。
  • “看截图”(look at screenshots)暗示助手应该用 rodney screenshot 命令,并提醒它可以用自己的视觉能力分析生成的图片文件,评估页面外观。

短短一句提示,就包含了大量手动测试!

Rodney 这类工具提供了广泛的能力:在加载的网站上运行 JavaScript、滚动、点击、输入,甚至读取页面的无障碍树。

和其他手动测试一样,通过浏览器自动化发现并修复的问题,也可以加到永久自动化测试里。

过去很多开发者避免做太多自动化浏览器测试,因为它们以不稳定著称——页面 HTML 的微小改动都可能导致测试失败,令人沮丧。

让编程助手长期维护这些测试,大大降低了因 Web 界面设计变更而更新测试的摩擦。

用 Showboat 让助手做记录

让助手手动测试代码不仅能发现问题,还能创建工件(Artifact),帮助记录代码并展示测试过程。

我对让助手展示工作过程(show their work)很着迷。能看到演示或记录下来的实验,是确认助手全面解决了给定挑战的有效方式。

我开发了 Showboat 来方便构建记录助手手动测试流程的文档。以下是我常用的提示:

code
Document your manual testing using Showboat. Use `uvx showboat --help` to learn how.

和 Rodney 一样,showboat --help 会教助手 Showboat 是什么以及怎么用。这是完整的帮助文本。

Showboat 有三个关键命令:noteexecimage

note 向 Showboat 文档追加一条 Markdown 笔记。exec 记录一条命令,然后运行该命令并记录输出。image 向文档添加图片——对于用 Rodney 截取的 Web 应用截图很有用。

exec 命令最重要,因为它同时记录了命令和输出结果。这展示了助手做了什么以及结果如何,旨在防止助手作弊,把希望发生的事写进文档。

我发现 Showboat 模式能很好地记录我在助手会话中完成的工作。希望看到类似模式在更多工具中被采用。

本文编译自 Agentic manual testing,版权归原作者所有。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

pgEdge 推出开源 MCP Server for Postgres,支持 AI 智能体通过模型上下文协议(MCP)而非传统 API 方式访问数据库。服务强调数据源无关性、完整模式自省和 token 优化,适用于 Claude Code、Cursor 等主流 AI 开发工具。

指南The New Stack·4月2日·4 分钟

Google 推出 Flex 和 Priority 两个新的推理层级,帮助开发者平衡成本与可靠性。Flex 是成本优化层级,适合后台任务,价格便宜一半;Priority 是最高保障层级,适合用户交互型应用。两者都通过同步接口调用,简化了架构管理。

指南·4月2日·3 分钟

评论