乐于分享
好东西不私藏

为什么你的OpenClaw做不好自动化测试

为什么你的OpenClaw做不好自动化测试

OpenClaw 这类通用智能体,可以做“自动操作电脑/浏览器”,但离“自动化测试系统”还差了整整一层,甚至两层。

因为它解决的核心问题是:“让模型会操作 GUI 和浏览器。”而自动化测试真正要解决的是:“让系统在可重复、可解释、可扩展的条件下验证产品是否正确,并把失败转化为可行动的质量信号。”

这不是一回事。OpenClaw 官方把自己定义为“运行在你自己机器上的开放 agent 平台/个人 AI 助手”,提供浏览器控制、文件/脚本执行、插件等能力;它的浏览器工具本质上是一个受控浏览器表面,支持点击、输入、截图、请求查看、trace、环境设置等。它很强,但官方定位并不是测试框架。

为什么大家会觉得它“能做自动化测试”

因为从表面上看,它已经具备了测试自动化最显眼的那部分能力:

  • 能开页面、点按钮、填表单、切 tab
  • 能看页面快照、拿截图、导出 PDF
  • 能读取请求、response body、console error
  • 能改 headers、offline、地理位置、时区、设备
  • 还能录 trace 做调试。

这些能力确实足以让它完成很多测试相关动作。 所以说它完全不能用于测试也不对。它能做,而且在一些场景里很好用。

但问题在于:

“会执行测试动作” ≠ “具备测试自动化能力”。


自动化测试的本质不仅仅是“把人点页面的动作自动化”

自动化测试至少有三层:

  • 第一层是操作自动化:点击、输入、等待、滚动、上传。
  • 第二层是验证自动化:断言什么算对、什么算错、等多久、如何重试、如何避免时序竞争。
  • 第三层是质量自动化:测哪些、为什么测、怎么测、失败属于谁、是否阻断发布、如何沉淀为下一轮知识。

OpenClaw 这类工具主要强在第一层,能碰到一点第二层,但离第三层还很远。 而企业真正痛的,恰恰主要在第二层和第三层


为什么通用智能体不直接等价于 UI 自动化测试

1)它的目标是“完成任务”,而测试的目标是“发现偏差”

通用智能体最初被训练和编排时,默认优化目标通常是:把任务做完。

比如:

  • 成功登录
  • 成功提交表单
  • 成功导出报表

但测试不是“尽量完成任务”,而是要回答:

  • 这个流程是否以正确方式完成
  • 中间状态是否符合预期
  • 权限是否越权
  • 文案、金额、库存、事件、接口、副作用是否都正确
  • 不该成功的时候有没有错误地成功

也就是说,智能体天然偏“agentic success”,测试天然偏“controlled falsification”。 前者倾向于找路走通,后者倾向于严格验证哪里不对

这会带来一个很现实的问题: 一个聪明 agent 往往会 “绕过去”,而一个好测试恰恰要“卡住并报警”


2)测试最核心的是 test oracle,而不是 action

UI 自动化最难的从来都不是 click/type。 最难的是:

什么叫通过,什么叫失败。

例如一个“提交订单”场景,真正的断言往往不只是:

  • 页面出现“成功”提示

而是要同时验证:

  • 订单状态从 draft 到 submitted
  • 库存被正确锁定
  • 金额计算正确
  • 优惠规则被正确应用
  • 下游消息已发出
  • 审计日志存在
  • 无重复提交、无脏数据

Playwright 这类测试框架把“locator + web-first assertion + auto-wait + isolated context”做成了一等公民:locator 是核心抽象,断言会等待并重试,browser context 保证隔离与可重复性。

而 OpenClaw 当然也能 wait、也能 evaluate、也能查请求,但这些更像agent 临时操作能力,不是一套以“可维护断言体系”为中心设计出来的测试语义


3)它的元素定位模型更适合“当下操作”,不适合“长期稳定资产”

OpenClaw 的浏览器动作依赖 snapshot 产生的 ref;官方文档明确写了,这些 refs 跨导航不稳定,动作需要基于新快照重新取 ref;并且动作层面故意不支持 CSS selector。同时,它内部是通过 Playwright 的 aria-ref 或 getByRole(...) 去解析这些 ref。

这套设计对 agent 很合理,因为它优化的是:

  • 当前页面快速可操作
  • 给模型一个简洁的交互界面
  • 降低 selector 暴露复杂度

但对测试资产来说,问题就来了:

  • 我怎么沉淀成长期可维护的 case
  • 我怎么做变更 diff 后的定位稳定性分析
  • 我怎么让断言与业务对象绑定,而不是每轮都重新“看图找按钮”
  • 我怎么做大规模回归时的可预测维护

测试框架会强调稳定 locator、role/text/testid 策略、代码生成、trace、上下文隔离等,是为了把交互动作变成可长期维护的工程资产。Playwright 官方也明确把 locator 的可重试性、role/text/testid 定位、以及 codegen 生成稳健 locator 作为核心最佳实践。


4)通用 computer-use 天然更贵、更慢,也更难规模化回归

Anthropic 官方把 computer use 明确标成 beta,并提醒不要把它用于要求“完美精度”的任务或敏感信息场景;同时它还有额外系统提示开销、工具定义 token 成本,以及截图图像成本。OpenAI 的 computer use 指南也明确建议在隔离浏览器或 VM 中运行、让人参与高影响动作审核,并把页面内容视为不可信输入。

这意味着如果你拿这类能力去跑:

  • 每晚几千条 UI 回归
  • 多环境并发
  • 高频 PR 级 smoke
  • 长链路端到端回归

你会遇到几个问题:

  • 延迟高
  • 成本高
  • 结果波动大
  • 调度复杂
  • 安全边界更难控

所以这类 agent 更像“贵而聪明的执行者”,不太像“便宜而稳定的大规模回归工人”。


5)测试需要“受控环境”,而 agent 更擅长“开放环境”

测试自动化追求的是:

  • 固定初始状态
  • 固定数据
  • 固定权限
  • 固定浏览器上下文
  • 固定等待策略
  • 固定可复现实验路径

Playwright 之类框架专门强调 browser context 隔离、认证状态复用、避免级联失败,就是为了提高可重复性

而通用 agent 的默认哲学更像:

  • 去理解当前环境
  • 在不确定中自适应
  • 看见变化后自己找路
  • 不行就换一种方式做成

这对“完成真实任务”是优势, 但对“做受控实验”反而可能是问题。

因为测试里很多时候你不希望 agent 太聪明。 你希望它在异常处老老实实失败,而不是自己绕过。


6)很多 UI 自动化问题,根本不是 UI 操作问题

企业里大量所谓“UI 自动化难题”,本质上并不在 UI 层:

  • 测试数据准备困难
  • 账号/权限矩阵复杂
  • 异步任务、消息、缓存导致状态不可预期
  • 环境不稳定
  • 页面只是症状,根因在接口/中间件/主数据
  • 缺少稳定 oracle
  • 缺少可观测性和故障归因

OpenClaw 可以帮你“把页面走通”, 但它并不会天然解决:

  • 订单为什么没推进
  • 这次失败是脚本问题还是环境问题
  • 哪个改动引发了本次回归失败
  • 哪些 case 本轮应该跑,哪些不该跑
  • 失败后应不应该阻断发布

7)安全与治理也是硬约束,不只是能力问题

OpenClaw 官方文档明确提醒:

  • agent profile 里可能带有登录态,要当敏感数据处理
  • evaluate 和 wait --fn 会在页面上下文执行任意 JavaScript,prompt injection 可能把它带偏
  • Gateway / node host 需要保持私有。

Anthropic 也明确说了:prompt injection 等漏洞在 frontier AI 系统里仍然存在;有些情况下,网页或图片中的内容会覆盖或干扰用户原始指令,因此不要在没有严格人工监督的情况下,把 computer use 用于需要完美精度或涉及敏感信息的任务。

所以从企业视角看,这类工具即使技术上能做测试,也不意味着它天然适合:

  • 生产相近环境
  • 含真实账号/数据的环境
  • 强审计、强合规场景

那 OpenClaw 对测试到底有没有价值?

有,而且我认为它的正确位置不是“替代测试框架”,而是:

作为智能体执行基座补进测试体系。

更具体地说,它适合这几类场景:

1)探索式测试助手

让 agent 代你快速跑一遍陌生页面、收集路径、截图、请求、控制台错误、trace。 这对冒烟排查和页面理解很有价值。

2)长尾场景自动化

一些不值得正式工程化、但人工反复要做的操作,可以先交给 agent。 比如后台配置、一次性验收、环境准备、数据清理。

3)失败复现与证据采集

当正式回归失败后,让 agent 去复现、补截图、补 trace、拉请求上下文。 它比纯脚本更灵活。

4)自动化资产草稿生成

让 agent 先把一条流程走通,抽出候选步骤、页面语义、关键控件,再由正式测试框架固化成稳定 case。

5)UI 变更后的应急恢复

当页面小改版导致老脚本大面积失效时,agent 可以充当临时“恢复层”,帮你跨过短期波动,但最终还是要回到可维护 locator 和稳定断言上。


我对它的定位会是这样的

OpenClaw 很适合做“会操作电脑/浏览器的通用执行者”; 但自动化测试平台需要的是“会做受控实验、会严格断言、会管理质量闭环的测试系统”。

前者可以成为后者的一部分, 但前者本身不能等于后者。


把小龙虾放进现有测试平台的正确方式

OpenClaw或者同类 computer-use agent 更适合放在测试平台执行层的补充通道,而不是主测试资产层。

也就是:

  • 主干Playwright / Appium / API / 数据校验 / 规则断言
  • 补充OpenClaw 这种 agent 执行器
  • 上层风险识别、测试设计、回归选择、故障归因、门禁决策

这样分工最合理:

  • 需要高稳定、可重复、可审计的,用正式测试框架
  • 需要高灵活、强适应、快速探索的,用 agent
  • 需要质量决策和闭环的,用 TestOps 平台

这才不会把“聪明执行”误当成“测试能力”


最后一句话总结

OpenClaw 能把“操作”自动化,但自动化测试的本质不是操作自动化,而是“可重复的验证 + 可解释的失败 + 可治理的质量闭环”。

所以它可以成为测试体系里的一个强组件, 但单靠它,解决不了 UI 自动化测试最难的那些问题