AI Agent + 产品经理 = 产品测试工程师
9 月公司组织讨论 AI 在工作场景中的应用。正好我在研究 E2E 测试相关的话题,于是尝试了一下 OpenCode 和 Playwright,发现效果惊人的好。
用 OpenCode 而没有选其他 AI Agent 框架(如 Claude Code)是因为它可以集成公司的企业版 Github Copilot 账号,这样我们在公司内网可以无限量调用 GPT-4 和 Claude Sonnet 等大语言模型。
其次微软做的 Playwright 是一个可以调用浏览器 API 的自动化测试框架。相比于 Selenium 更轻量,社区维护更积极,和大模型结合也更好(有官方的 MCP Server)。Playwright 还内置了 webdriver,免去了很多环境配置的麻烦。
基于 OpenCode 和 Playwright-MCP-Server,稍加少量提示词模板,就可以不写一行测试代码,完整跑通一组 Web UI 的 E2E 测试用例。这在过去简直无法想象。
一直以来我都认为,让程序员去编写 E2E 测试代码费事费力,实属弊大于利的行为。对于边界情况和性能,单元测试和 API 测试可以满足90%以上的需求。E2E 测试的价值主要在于发现UI交互和集成方面的问题。用自动化 E2E 测试代码去覆盖集成测试和 UI 测试场景,不但维护成本极其高昂,每个微小的 UI 调整,都可能破坏测试代码,而且统计下来,测试组合中失败的用例有一半以上并不是功能异常引起,而是 UI 加载延迟、前端修改了变量名称、测试环境网速慢等原因。而对于一些真正威胁集成环境的特殊情况,比如网络中断造成的请求重试、接口修改造成的参数越界,编写 E2E 测试的效率都不如 UT 和 API 测试。因此我一直鼓励团队招聘一名全职的测试开发工程师,而不是让开发每个迭代都留出一部分时间去维护 E2E 测试用例。
另一方面,站在团队项目负责人的角度,我更关心需求是否真正被理解和落地,如何去验证程开发工程师实现的结果。
AI Agent 的出现让敏捷开发的工作流程有了变化。如上文提到的 OpenCode + Playwright-MCP-Server 的组合,AI 只需要阅读用户文档了解一些 UI 操作的基础知识,就能根据测试用例的自然语言描述,自动打开浏览器,根据提示词的要求一步步点击页面元素完成整个业务功能的操作,如果稍加指导,还能给出具体的执行步骤、结果、遇到的问题,生成完整的测试报告。这并不亚于聘请了一名初级测试工程师。
因为维护成本的极大降低(只需要维护一组测试用例的 markdown 描述文件),过去很多细节的 UI 测试场景可以用 AI Agent 来覆盖。最重要的是,这种工作完全不依赖研发人员,作为产品经理或者 PO、BA,都可以直接用自然语言编写测试用例,使编写用户故事 - 验证功能形成闭环,消除了业务 - 研发 - 测试三者之间互相转述需求带来的歧义。
丰田模式的原则中提到生产中造成浪费的几种情况:
- 过度生产
- 等待
- 不必要的运输
- 过度加工
- 过多的库存
- 不必要的移动
- 缺陷
AI Agent 一定程度上解决了“过度生产(要重复编写测试代码)”,“等待(从需求实现到测试用例实现,最后才能验证功能)”,“不必要的运输(业务需求在不同人员之间的传递)”三个方面的浪费。