E2E 测试对于广大 Web 开发者来讲并不陌生,由于它能贯穿整个应用的使用流程,因而能最大程度地模拟用户的真实操作,从而发现更多潜在的问题。但在实践中,它往往是最被忽视的测试环节,原因也很简单:脆弱且难以维护。

之所以脆弱,是因为它往往跟 UI 是紧耦合,而此部分却是最容易变动的。由此,也造就了它难以维护的特性。Playwright 虽然在一定程度上缓解了这一问题,但由于它依然依靠脚本(其本身的柔韧性天生就不足)来描述测试流程,因而也难以从根本上解决这个问题。

因此,典型的 E2E 测试大多采用以下方式之一:

  • 机动性手动测试,大多是临到重要发布时才会进行

  • 仅选取若干关键流程的自动化测试

  • 以上两者结合:关键流程自动化,其他机动性手动测试

阔是,现在已经是被业内人士称为“agent 元年”的 2025 了,我们是否能够转变一下思路呢?前文提到:将 LLM 视为“人”而非工具,那么我们是否可以考虑直接让 LLM 或 Agent 来执行 E2E 测试呢?如同我们招了一个好使唤的测试小弟。

请注意:这里是让 LLM/Agent 来执行测试,而非生成测试脚本,这是根本区别。为何:

  • 生成测试脚本依旧没有摆脱脚本的桎梏,它依旧需要大量的人工参与:检查脚本的正确性、维护脚本、更新脚本等。本质上只是相当于在原有基础上开了 2 倍速。

  • 而直接让 LLM/Agent 来执行测试,则完全摆脱了僵化的脚本,转而使用自然语言来描述测试流程。这样一来,测试流程的编写和维护就变得非常简单,甚至可以直接由产品经理或测试人员来完成,而不需要开发人员的参与。

如此一来,自然语言成了新的测试脚本,你甚至可以直接将其纳入你的版本库,待成熟之后,集成进入 CI/CD 流程中。

从技术上来讲,目前已经完全没有问题:agent + playwright mcp server 便可以轻松实现这一目标。

整个流程大致如下:

  1. 编写生成测试计划的 prompt。

  2. review 生成的测试计划,它本身也相当于一个 prompt,未来要传给 agent 执行。

  3. 运行测试计划得到测试报告。

整个过程就是传说中的左脚踩右脚神功:“纵云梯”,用 prompt 生成 prompt,然后再用 prompt 来驱动 agent。

实践演示

以下是一个生成测试计划的 prompt:

<span leaf="">ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line</span>

生成的测试计划示例(注意:需要 review !!!只有在 前面的 prompt 非常成熟稳定之后,此步骤才能减弱):

<span leaf="">ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line</span>

生成的测试报告示例:

图片

完整演示视频

访问:本号关联的视频号【老胡闲话】(https://weixin.qq.com/sph/AgHyrdaIN)或地址:https://youtu.be/JszMXxP3xgE?si=-NJ9KLyOQw7RrHPR