摘要:33 步、7 个任务段的 OceanBase「登录 → SQL 工作台 → 创建存储过程 → 运行」用例,连跑 4 次全过。日志里能拆出两条线:执行缓存(自动复利、零成本)和知识库(手动建、提速 5-15%)。本文用真实数据 + 录屏讲清楚——AI 自己不行,要配套这两条线。

本篇是 TestStar AI 测试实战 #11。  
怎么接,看 实战 #8 · 功能用例接入 TestStar;  
平台里有什么,看 实战 #9 · 功能巡礼;  
这篇回答:AI UI 测试靠不靠谱,看 4 次跑出来的真实数据。


写在前面

UI 自动化维护成本高、月失效率常超 20%——写过的人都懂。一个最磨人的问题是:改一次版本,脚本成片失效

直观的解法是让 AI 看屏幕自己点。问题是:AI 自己行不行?

答案是:靠 AI 自己,不行。

AI 找元素要调模型,每一步都慢、都贵、都可能误判。靠 AI 自己点完一条 33 步的用例,5-8 分钟跑掉,2-3 块 token 钱花掉,还不一定稳

那为什么这次 4 次跑全过?因为有两条配套的线在起作用:一条是自动复利的执行缓存(AI 跑完自己记路),另一条是手动建的知识库(团队提前告诉 AI 元素叫什么)。

这两条线单独哪条都不够,合起来才有 4 次跑全过的结果

下面用真实数据把这件事讲清楚。


一、问题的两面

做 UI 自动化的人都被这两个问题折磨过:

第一个:维护债无底洞。

用例逻辑本身没错,坏的是写死的元素定位。按钮挪几像素、id 改了、XPath 断了——用例成片失效。修一条的流程是查原因、改定位、回归验证。用例一多,维护就是个无底洞。

第二个:夜里定时跑完,红一片不知道怪谁。

有服务连不上的,有登录态过期的,有测试数据没就绪的,也可能藏着真缺陷。红一片怎么分类?谁去看?看的人信不信报告?自动化 ≠ 敢用

AI UI 测试工具冲的就是这两个问题。解法是:让 AI 看页面截图现场判断怎么点,用例里不写任何元素定位——页面怎么改版,用例一个字不用改。


二、AI UI 测试是什么

一句话:用例用中文写,AI 打开真实浏览器把它跑完,每一步截图留证,跑完告诉你哪些是真缺陷、哪些只是环境问题。

听起来像录屏回放——不是。回放是死脚本改不了,AI UI 测试是模型理解意图+现场判断+执行

具体到这次跑用的平台 TestStar,机制是:

  • 用例纯中文("点击蓝色登录按钮",不写 ‎#login-btn
  • 执行时多模态模型看截图,判断点哪、输什么- 每步截图,跑完全程有迹可循
  • 失败时分类:环境问题 vs 真缺陷,不混

这是方案。现在什么状态:累计 269 次提交、约 7.5 万行代码,不是只能演示的 demo——自己每天在用,线上挂着定时回归任务。


三、真实跑测:4 次跑通 33 步用例

3.1 为什么挑这条用例

故意挑难的。目标页面https://console-cn.oceanbase.com/

7 个任务段、33 步

登录控制台 → 进 SQL 工作台并连接 chatbi 库 → 在对象树展开「存储过程」分类 → 打开新建存储过程对话框 → 填参数 → 点创建 → 验证建好了还能运行

难点:全是动态弹窗、富文本编辑器、参数表格这类不好惹的控件,不是登录页那种演示场景

3.2 用例原文(节选)

点击「密码登录」标签页,切换到密码登录方式
在「手机号/邮箱」输入框输入「${OB_USERNAME}」
在「密码」输入框输入「${OB_PASSWORD}」
点击蓝色「登录」按钮
进入 SQL 工作台。可以从实例卡片 hover「连接」按钮后,在菜单中点击「SQL 控制台」;
也可以直接点击左侧导航栏的「SQL 控制台」入口。两条路径任选一条。
点击参数表第一行「名称」列的空白单元格。确保光标进入该单元格后,输入「TestStarA」。
如果第一次点击没有进入编辑状态,再次点击该单元格后输入。
点击参数表第一行「长度」单元格,清空默认值 45,输入 47

OB存储过程-115秒精华版

实际测试过程录屏

这段用例里有 4 个细节值得单独说:

  • 一个选择器都没有——没有元素 id、XPath、CSS 选择器,全是「点击蓝色登录按钮」这种描述,那个按钮在屏幕的哪个位置,AI 自己看。
  • 每一步都在防弹窗——7 处写着「如果页面存在弹窗、通知、升级提示、新手引导、体验之旅或其他遮挡元素的浮层,先关闭;如果不存在则跳过」。OceanBase 控制台的引导浮层不是页面初始化出现的,是在你点按钮之后动态冒出来的,防御必须铺在每一步前面
  • 允许两条路径——「进 SQL 工作台」那步写明了两种走法,AI 走哪条都算过。
  • 用例开头带页面上下文——直接告诉 AI 这个系统长什么样:登录页左边是什么、右边表单有哪些输入框、进去之后是什么页面、SQL 工作台对象树能展开哪些分类。AI 不用从零开始猜

3.3 4 次跑的真实数据

次数 耗时 缓存命中 Token 节省
第 1 次 333 秒 50 次 5.8 万
第 2 次 305 秒 55 次 6.4 万
第 3 次 476 秒 42 次 5.05 万
第 4 次 357 秒 57 次 6.6 万

4 次全部跑通,7 个任务段都过了

三个口径先说清楚,免得被当成实测

  • 耗时剔除了「通用弹窗预处理」(平台每次开跑前先扫一遍页面关弹窗,约 14 秒),不算在用例本身里
  • Token 节省是估算值——算法是「跳过的模型调用次数 × 单次估算消耗」,不是计费账单上的实测数字。真实花销还得看模型账单。
  • 缓存命中是执行日志里直接读出来的,不是事后统计

数据里 4 件事值得注意

  1. 4 次全过——一条 33 步、7 个任务段的用例,连跑 4 次没有一次挂在中间
  2. 缓存命中了 42-57 次——这条用例没做任何前置准备,没写选择器,也没提前登记过页面元素。成本能降下来,是因为有另一条自动的线在起作用(下文讲)。
  3. 耗时在 305-476 秒之间浮动——不是每次都一样快。AI 每步都要先看页面再决定动作,这是方案本身的代价,不绕开。
  4. 第 3 次反而最慢(476 秒)——网络抖动或模型偶发误判,任何一次都可能赶上,别把单次跑得慢当成系统问题

> 【插图1 · 13-four-runs-table.png】   

图注:4 次跑的真实数字 · 一表带走


四、AI 自己不行,靠两条线

4.1 第一条:执行缓存——自动复利的免费加速

执行缓存是平台在每条用例执行时自动沉淀的页面规划结果 + 元素定位结果。不是团队手动维护的,是模型在找元素的时候第一次找到记下来,下次找同元素直接复用。

通俗点说:AI 第一次看到登录页,要看 5 张图才能认出「密码登录 Tab」在哪。认完记一下,下次看到直接说「就是它」。整个过程不需要团队做任何配置。

这次跑的证据——看 4 次重复跑:

指标 第 1 次 第 2 次 第 3 次 第 4 次
元素定位缓存命中 (首次沉淀) 25-39 次 25-39 次 25-39 次
页面规划缓存命中 (首次沉淀) 16-18 次 16-18 次 16-18 次

4 次跑有 42-57 次调用是缓存直接给的——拆开看是两部分:元素定位命中 25-39 次,页面规划命中 16-18 次。省掉的就是这些模型调用,换算下来是那 5 万到 6.6 万 Token。

它解决的是什么:不是「快」,是「不要更慢」。AI 步骤如果不缓存,第一次跑要 333 秒,第二次如果还按完全冷启动跑,可能 350 秒——因为没记录任何东西。执行缓存让重复跑几乎不增加成本

适用场景

  • ✅ 同一条用例每天 / 每周重复跑(定时任务)
  • ✅ 同一团队多条用例共用同一页面
  • ⚠️ 单次跑——缓存基本没用
  • ❌ 跨团队 / 跨项目共享——per-用例,不跨团队

饱和点:33 步用例里有大量动态 UI 步骤(弹窗检测、新手引导、对象树展开、刷新),这些步骤每次结果都不一样,缓存命中到 60-70% 就饱和。3 次跑后增速变缓就是这个原因。

4.2 第二条:知识库——手动建、提速 5-15%

页面知识库是团队主动登记的元素语义信息——「密码登录 Tab」叫什么、在哪、长什么样。AI 执行时优先读它,不用每次现场找。

和执行缓存的区别

执行缓存 知识库
是不是自动的 自动 手动
0 → 增长要多久 第一次跑就有 团队一周能起步
维护成本 要人建、要人更新
提速贡献 让重复跑不更慢 5-15%(不是几倍)

为什么提速只有 5-15%

很多团队以为「知识库命中 67%,速度应该快 67%」——不是

总耗时 = 模型调用时间 + 接口断言时间 + 固定开销。知识库只省「模型找元素」这一步的时间。如果一条用例里模型找元素占 30%,知识库命中 67% → 节省 30% × 67% ≈ 20%。但实际还要扣掉「未命中那 33% 还是要调模型」,净提速通常 5-15%

它解决的是什么:不是「快很多」,是「稳很多」。67% 命中意味着剩下的 33%(5 步)AI 还是得自己找——这 5 步是偶发失败的来源。知识库把「偶发失败」变成「稳定通过」。速度只差一点,稳定性差很多

适用场景

  • ✅ 同一页面多个用例共用(一次登记,多条用例受益)
  • 改版频繁的页面
  • ⚠️ 单条用例——单独建知识库性价比低
  • 动态 UI(弹窗、新手引导)——知识库很难提前建

4.3 加速是怎么叠加的

同一条用例

  • 第 1 次跑:执行缓存从 0 开始建 + 知识库 0% 命中 → 357 秒左右
  • 第 2 次跑:执行缓存部分命中 + 知识库仍 0% → 305 秒
  • 第 3 次跑:执行缓存更多命中 + 知识库仍 0% → 357 秒(波动)
  • 如果团队补了知识库 + 知识库命中 67% + 执行缓存继续积累 → 134 秒

结论

  • 执行缓存完全自动——每跑一次都在涨,团队不用做任何动作
  • 知识库需要团队花时间——从 0 到 67% 命中,至少要建十几个元素
  • 两条线并行 → 性价比最高——你不需要为执行缓存做任何事,只需要把时间花在知识库上,执行缓存自然叠加

> 【插图2 · 13-two-acceleration-lines.png】   

图注:执行缓存 vs 知识库 · 两条线对比


五、替代什么、节约什么

5.1 替代部分人工

33 步 OceanBase 用例,人工跑要多久?点击、输入、看结果、截图——粗估 8-12 分钟

这次 4 次跑:

  • 完整版最快 305 秒 ≈ 5 分钟
  • 简化版 134 秒 ≈ 2 分钟
  • 一次省 3-10 分钟

一天跑多次、按周跑、加版本回归——这个数字会乘起来

但要诚实标注

  • 替代的不是全部人工——AI 接的是 33 步这种结构化用例
  • 验证码 / 强风控 / 画布 / 探索性测试还是人工
  • 测试同学不是被替代,是转向——探索性测试、失败复核、步骤维护、用例设计

5.2 节约成本:算笔细账

Token 成本:4 次总消耗 5.8 + 6.4 + 5.05 + 6.6 ≈ 24 万 token。按主流视觉模型 ~¥0.04/千 token 算:

  • 4 次总成本:~¥10
  • 单次平均:~¥2.5

对比人工

  • 1 个测试同学 1 小时成本(粗估)~¥50-100
  • 单次用例人工执行 8-12 分钟 ≈ ¥7-20
  • AI 跑单次 ¥2-3 vs 人工 ¥7-20 ≈ 节省 60-80%

前提:这是结构化、可重复的用例。探索性测试、新功能冒烟、人与人沟通的会议——AI 帮不上。


六、几个不能回避的事

它慢。一条 33 步用例 5 分多钟,传统脚本是分钟的量级。AI 每一步都要先看页面再决定动作,这是路子的代价。

它花钱。每一步都在调模型,所以做了缓存来摊薄,但成本终究是成本。护栏默认收紧:自动重跑默认关、重试次数有上限、花费逐次记账。

移动端还没上生产。现在最顺的是 Web。

它不替代 Selenium,也不替代测试工程师。它接的是维护成本最高的那部分 UI 回归:让页面改版不再等于重写脚本。

33 步用例里有弹窗 / 对象树展开,缓存命中到 60-70% 就饱和——动态 UI 步骤很难缓存,这是方案本身的代价。

知识库 67% 命中,提速只有 7-10%,那建它干嘛?建知识库不是为了快,是为了稳。67% 命中意味着 5 步 AI 不用自己找——这 5 步是从「偶发失败」变成「稳定通过」的关键。

4 次跑都用 OceanBase 一条用例,算不算选样偏差?完整版 3 次跑 + 简化版 1 次跑——两种用例都跑通,不是只挑好看的发。


七、写在最后

如果团队也在被 UI 自动化的维护成本折磨,或者好奇「AI 看着页面点用例」到底靠不靠谱——文中有实际执行录屏,可以看一次真实跑测的录屏和报告。

留言:你团队跑同一条用例时,观察到「缓存复利」了吗?还是第 N 次跑和第 1 次跑一样慢?下一篇按读者留言里最多的场景展开。


参考资料


写在最后(系列链接)

关注作者,后续继续写自愈边界、兜底规则深挖等实战篇。

更多推荐