☰
TestStar | AIUI 测试还要建知识库?我们 11 个元素搞定 80% 步骤
2026/10/14 10:06:21 网站建设 项目流程

TestStar AI 测试实战系列· 第 5 篇 · 上一篇:Token 怎么从 48 万压到 5 万——AI UI 测试上生产的成本账

全文用同一条19 步 SQL 控制台用例(登录 → 选实例 → 输入 → 执行 → 断言)。纯视觉跑测:冷启动约48 万 token,热缓存约5.4 万——贵但还能跑;真正搞心态的是flaky:同一步今天点对、明天误点相邻控件。

本篇讲跑得稳——页面知识库。对其中15 个交互/断言步骤做静态覆盖,命中12 个(约 80%);注入后冷跑约29.7 万 token,热跑约5.7 万,「密码框误点」类 flaky 未再出现。


一、有一类失败很搞心态:不是 bug,是 AI 每次重新猜

AI UI 测试上生产后,常见这种失败:

同一条登录流,今天点对「登录」,明天点到密码框旁空白——产品没改、用例没改、环境没换,视觉理解在抖。

我们在TestStar里用真实用例踩过:登录 → SQL 控制台 → 输入 → 执行 → 断言,19 步(后文 token 数据均出自这条线)。其中一步反复「节点定位偏了」——不是断言错,是 AI把相邻控件看混。

传统 Playwright 绑#submit-btn,改 DOM 才红。AI 测试靠看屏幕,相邻元素像,就容易抖。

自愈能救一部分(系列第 3 篇),但更根本的问题是:

能不能少让 AI 每一步都从零猜页面长什么样?

页面知识库干的就是这个——不替代视觉,而是给短的位置锚点:先看锚点,找不到再纯视觉。


二、知识库记什么——「语义 + 位置」,不是 XPath 博物馆

很多人一听「知识库」就想到 Page Object:几十个 selector、一改版全崩。

我们每条元素只记两样:

记什么例子不记什么
语义密码登录 tab、登录按钮、实例连接完整 XPath/CSS
位置提示登录页顶部 tab 区、表单底部、列表每行右侧像素坐标、绝对 DOM 路径

AI 测试的步骤是自然语言(「点登录」「选实例」)。知识库在跑之前补一句:你这句话指的是页面哪一块,让模型先看锚点再看像素。

SQL 控制台这条线,我们从5 个元素试起,两周扩到 11 个——缺哪补哪,不先画大架构:

  • 登录入口(密码登录 tab · 顶部 tab 区)
  • 登录按钮(表单底部)
  • 实例连接(列表每行右侧)
  • SQL 输入框、执行按钮、结果区域……

一条 knowledge 长什么样(可直接照着写):

element:登录按钮semantic:提交登录表单的主按钮location_hint:密码输入框下方,表单底部居中match_keywords:[登录,提交,确认登录]page:登录页notes:勿与顶部「验证码登录」tab 混淆

11 个具体元素,比 1 套「通用 schema」先有用——第六节专门说为什么。


三、注入在跑之前——静态匹配,命中才加长 prompt

知识库不是跑时让 AI 自己去翻 wiki,而是启动前做一次静态匹配:

  1. 列出用例里所有交互步、元素级断言步
  2. 用步骤关键词(登录、连接、执行 SQL…)匹配知识库
  3. 命中→ 附加位置提示,再交给视觉引擎
  4. 未命中→ 原样跑,不硬贴 hint(乱贴比不贴更坑)

链路用大白话讲:

步骤:点击登录 → 匹配「登录按钮」→ 提示「表单底部」 → 执行:优先在表单底部找;找不到再纯视觉

和 Token 缓存是两套机制:

机制解决什么
Cache复用上次 AI 想明白的那一步 →省钱
知识库减少这一步想错地方 →省 flaky

叠加后才出现「热跑 5 万级 token + 稳定性上来」。


四、80% 命中算不算合格——我们怎么验

别急着宣称「全覆盖」。我们做过静态覆盖检查(不跑浏览器,只数步骤能否匹配):

  • 用例15 个交互/元素断言步
  • 命中12 个 → 80%
  • 未命中 3 个,都有理由:
未命中步骤为什么不命中
关闭弹窗通用逻辑,靠 AI 泛化
数据类断言(结果行数)不涉及控件定位
临时/debug 元素低频,不值得固化

80% 是健康线——粒度够,又没为 KPI 硬塞。只有 40%:库太薄或用例关键词太散;声称 100%:多半把不该固化的也塞进去了。

100% 覆盖的知识库,通常是把不该固化的步骤也固化了。

验收三步:

  1. 挑1 条真实核心业务用例(别 demo 页)
  2. 数交互 + 元素断言步,算命中率
  3. 每个 MISS 写一句「为什么不命中」——写不出理由的才补

五、冷跑 vs 热跑:token 与稳定性

知识库会加长 prompt,冷启动更贵。同用例、同知识库连续两轮:

轮次CacheToken耗时结果
冷跑第 1 轮(Run25)miss约 29.7 万约 208 秒通过
热跑第 2 轮(Run26)hit约 5.7 万约 99 秒通过


冷跑 / 热跑 token 对比

对比未注入知识的纯视觉冷/热(约 48 万 / 约 5.4 万):

  • 冷跑:注入后 prompt 更长,第一轮账单不能否定方案
  • 热跑:回到5 万级,与「纯视觉热缓存约 5.4 万」同一量级
  • 稳定性:两轮连续通过;「密码框/节点偏了」注入位置提示后未再出现

定位:

接受前几轮贵一点、建库花一点人工,换 CI 少红、少误点、少人工盯。

用第五轮以后的账单和 flaky 率评价,别用 Run1 的 token 砍项目。


六、为什么不做「通用页面 schema」

有人提议:抽通用 UI schema,登录按钮、表格、分页器统一字段,全产品复用。

我们否了:

先沉淀一条用例的真实知识,跑两周,看哪些字段真有用,再决定要不要抽象。

路线典型结果
先画通用 schema什么都能描述,什么都没描述清
先深耕单用例11 个具体元素,2 周验 80% 覆盖

抽象门槛(三条缺一继续堆具体元素):

  1. 至少 2 条不同用例复用同一套字段,且字段被读过、改过
  2. 维护成本低于各用例各写一份
  3. 产品改版时,schema不会比具体知识更难改

七、建库实操:两周从 0 到 11 个元素

第 1 周:跟跑一条用例

  • 跑挂时区分真 bugvs点错地方
  • 点错处补一条「语义 + 位置」
  • 目标:登录 + 进控制台 + 核心操作,先覆盖 5 个高频元素

第 2 周:对照覆盖表补洞

  • 做第四节80% 静态检查
  • 该补的补(执行按钮、结果区)
  • 不该补的写理由(弹窗、纯数据断言)

持续:改版 = 知识半衰期

  • 按钮搬家、文案改了,旧 hint 可能反噬(错锚点比没锚点更坑)
  • 目前靠改版后一轮回归 + 人工改库;理想态是失败率突增时提示「某条 knowledge 可能失效」

和自愈、记忆的分工:

能力解决什么
页面知识库少猜、少误点
失败记忆同类失败下次别重蹈
自愈已失败后,能否改步骤救回

知识库在前,自愈在后——能少失败,比失败了再救便宜。


八、还没做好的

  1. 跨用例复用:登录流各用例各一份,公共子流程库在做
  2. 自动失效检测:旧 knowledge 还在注入,靠人闻味道
  3. 运行时采纳率:静态 80% 有了,「hint 被采纳还是回退视觉」未逐步统计
  4. 多端:Web 最深;移动端「语义 + 位置」是否够用,系列第 6 篇会写

知识库不是配一次就结束,是跟产品版本一起养的。


几句能记住的

  1. 记语义 + 位置,不是 XPath 博物馆——给锚点,不替 AI 看屏
  2. 跑前静态注入;命中才加长 prompt,未命中别硬贴
  3. 80% 静态覆盖是健康线;MISS 要有理由
  4. 冷跑贵、热跑稳;第五轮后再评价
  5. 通用 schema 晚点做——11 个具体元素往往比万能描述先见效

下一篇

多端 UI 测试:同一业务流 Web / Android / iOS / 鸿蒙要不要各写一套——步骤三分法与 4 端 POC 维护账本。


关注我,系列持续更新。你们页面知识是 PO 维护还是测开维护?改版后多久更新一轮?

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询