文章目录前言一、先说说那些年我们踩过的坑1.1 用例迁移从人话到机器话的翻译费1.2 调试失败找 Bug 的 Bug 比 Bug 本身还多1.3 三端维护一个功能三套脚本三倍快乐二、AI 来了不是辅助是换赛道三、能力一用例自动生成QA 终于不用当翻译了3.1 _pipeline 的魔法从 JSON 到可执行脚本3.2 LLM 增强把人话变成机器话的 Prompt 艺术3.3 断点续传Pipeline 比我还怕从头再来3.4 Wiki 知识库AI 的入职培训手册四、能力二AI 自愈测试用例也会自我疗伤了4.1 传统调试一场没有尽头的循环4.2 AI 智能调试失败分类 自动诊断4.3 五类根因诊断AI 的病历本4.4 三个真实自愈案例AI 的妙手回春4.5 置信度AI 的胆小心态五、能力三VLM 跨平台一套脚本打天下5.1 截图即真理像素级理解5.2 统一 API说人话就能驱动5.3 底层驱动自动选择上层无感知5.4 BaseAIDriver感知-决策的核心循环六、架构设计的灵魂拷问6.1 为什么逐步执行而不是一次规划6.2 为什么置信度阈值是 0.56.3 为什么自愈返回完整步骤列表而不是增量 Diff七、行业对比三条路线的殊途同归7.1 传统方案Appium / Selenium / XCUITest7.2 AI 辅助方案Test.ai / Applitools7.3 AI Native 方案ai_uitester八、写在最后P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01前言说实话我干这行这么多年见过最离谱的职场场景是这样的凌晨两点一位 QA 同事盯着屏幕上的红色报错嘴里念念有词“这个按钮昨天还在左下角今天怎么跑到右上角去了产品经理你是不是偷偷加班了”旁边另一位同事头也不抬“别问了iOS 版的按钮在右上角Android 版的在中间HarmonyOS 版的…… HarmonyOS 版的按钮说你找错 App 了。”这就是传统 UI 自动化测试的日常。不是你在测试 App是 App 在测试你的耐心。一、先说说那些年我们踩过的坑1.1 用例迁移从人话到机器话的翻译费你们公司是不是也有个测试用例平台那里面存了几百条、上千条用例写得跟小说似的——“进入商品详情页检查价格是否正常展示向下滑动查看更多信息点击购买按钮……”写得挺好人类一看就懂。问题是机器看不懂啊。于是 QA 的工作就变成了把人话逐条翻译成机器话。理解业务逻辑、写元素定位、调试执行路径、改完再跑、跑完再改。一个中等模块翻译成本数人天起步。这让我想起大学考四六级的痛苦——明明每个单词都认识组合在一起就是不知道该怎么写。更惨的是四六级考完了就完了这翻译工作每个版本都要重新来一遍。1.2 调试失败找 Bug 的 Bug 比 Bug 本身还多用例跑失败了传统排查流程是这样的看截图 → 对比页面 → 判断失败原因 → 修改脚本 → 重新执行 → 又失败了 → 再看截图 → 再对比页面……循环往复无穷匮也。有时候失败原因特别玄学。弹窗遮挡流程变更网络抖动还是开发小哥顺手把按钮颜色从蓝色改成了绿色导致你的 XPath 当场去世最绝望的是你花了两小时排查最后发现是测试环境的数据被人清空了。那一刻你想的不是怎么修脚本是怎么把清数据的人从工位上搬走。1.3 三端维护一个功能三套脚本三倍快乐iOS、Android、HarmonyOS三端的元素定位方式完全不同。Android 用 resource-idiOS 用 accessibilityLabelHarmonyOS 用 componentId。同一个登录按钮在三端的名字比我的微信昵称还多。每次 UI 改版三套脚本同步失效。QA 团队的工作状态就像在玩打地鼠——刚按下去 Android 的坑iOS 的又冒出来了。别人写代码是 DRY 原则Don’t Repeat Yourself我们写测试是 WET 原则Write Everything Twice或者 Thrice。二、AI 来了不是辅助是换赛道有人说那用 AI 辅助一下传统方案不就行了比如用 CV 模型替代 XPath用 NLP 理解自然语言定位。想法很好但本质没变——还是在找元素、点元素的框架里打转转。元素真没了AI 也找不到。流程变了AI 也懵圈。所以得物搞了个狠的直接换赛道。不找元素了让 AI 像人一样看屏幕、理解页面、决策操作。简单来说以前是盲人摸象——靠 ID、XPath 这些拐杖在 DOM 树里摸来摸去。现在是睁眼看世界——直接截图扔给 VLM视觉语言模型AI 自己看、自己判断、自己点。三、能力一用例自动生成QA 终于不用当翻译了3.1 _pipeline 的魔法从 JSON 到可执行脚本得物内部有个测试用例平台导出的 JSON 结构复杂得很——树形目录、面包屑路径、优先级标签深度十几层节点几百个。以前 QA 得逐条手动翻译。现在扔给自动化 Pipeline六步走平台 JSON 导出 ↓ Phase 1: 树结构展平 — 提取所有叶节点及面包屑 ↓ Phase 2: 用例解析 — 面包屑 → 结构化数据 ↓ Phase 3: 去重 — 跟已有 suite 比对 ↓ Phase 4: LLM 增强 — 生成可执行步骤 注入 Wiki 知识 ↓ Phase 5: 持久化 — 写入配置文件 ↓ Phase 6: 版本归档 — 记录历史整个过程多久展平解析去重秒级。Wiki 预加载数秒。LLM 增强并行数十秒。持久化秒级。总计约一分钟。以前需要数人天的工作现在泡杯咖啡的功夫就搞定了。QA 终于有时间去……去写更多用例不去摸鱼去生活去楼下便利店看看有没有新口味薯片。3.2 LLM 增强把人话变成机器话的 Prompt 艺术核心在于 Phase 4 的 LLM 增强模块。输入是平台里的描述性用例比如某列表正常展示可滑动查看更多。输出是什么完整的 JSON 脚本包含 App、Tap、Wait、Assertion、Swipe 等步骤。但让 LLM 生成高质量步骤Prompt 设计得很讲究。每种步骤类型都有严格的格式规范**tap**必须描述点击目标的位置和特征。好例子“点击右上角的「确认」按钮”。坏例子没有坏例子因为不写清楚就直接报错。**swipe**必须包含起点、终点方向和滑动区域。好例子“从列表右侧向左滑动”。坏例子“滑动页面”——这说了跟没说一样AI 会一脸问号。**input**必须包含输入位置和内容。好例子“在搜索框中输入关键词”。**wait**必须描述具体的视觉信号。好例子“等待页面出现搜索框”。坏例子“等待页面加载完成”——AI 问你什么叫加载完成是转圈消失还是某个特定元素出现这就好比教一个刚入职的实习生做事。你说去把那个弄一下他肯定懵。你得说去把第三排第二个文件复印三份然后放在老板桌上。AI 同理而且 AI 不会反问哪个弄一下它只会给你生成一堆垃圾然后让你 debug。3.3 断点续传Pipeline 比我还怕从头再来Pipeline 每个阶段完成后都会写检查点文件。中断了没关系下次自动跳过已完成的阶段。LLM 增强完全失败了系统会构造 Fallback 用例名字通过多级降级策略确定确保至少有个东西能跑。这让我想起自己写论文的时候——Word 崩溃三小时白干。如果 Word 也有断点续传我能少掉一半头发。3.4 Wiki 知识库AI 的入职培训手册Wiki 不是独立文档而是嵌入系统的基础设施。五个场景都在消费它用例增强、自愈诊断、运行时执行、技能消费、反馈闭环。Wiki 质量直接影响三个核心指标用例生成准确性、自愈诊断准确率、运行时知识查找频率。Wiki 充分的时候步骤精确导航路径符合实际页面。Wiki 缺失的时候LLM 只能凭猜测生成步骤可能偏离实际——就像让一个没有地图的司机自己找路开到哪算哪。所以系统坚持宁缺毋滥原则五层降级匹配确保注入 Prompt 的知识准确可靠。错误知识比无知识更有害——给 AI 喂假情报后果比不给情报严重多了。这就好比新员工入职你给一本错误的员工手册他能把公司当成竞争对手的公司去拜访客户。四、能力二AI 自愈测试用例也会自我疗伤了4.1 传统调试一场没有尽头的循环用例失败后的排查循环我前面吐槽过了。但这里有个更扎心的真相很多时候用例失败不是因为 App 有 Bug而是因为——UI 变了。按钮从底部移到顶部了。文案从下一步改成确认了。中间多了一层页面。弹窗突然冒出来挡路。在传统模式下这些都不是 Bug是用例过时。QA 得手动更新脚本重新跑再失败再更新周而复始。这就好比你每天上班走同一条路某天市政把路牌换了你就不会上班了。正常人不会这样但传统测试脚本会。4.2 AI 智能调试失败分类 自动诊断ai_uitester 内置了 AI 智能调试模式。用例跑起来是一个 while 循环支持动态步骤变更。步骤失败了先过失败分类器规则引擎设备故障、超时、网络问题 → 自动换机或重试不麻烦 AI。业务逻辑失败 → 进入 AI 诊断。AI 诊断的输入很豪华带 ✓✗○ 标注的步骤 错误信息 失败截图 Wiki 知识。输出更豪华诊断结果 置信度 完整修复步骤 恢复执行的位置。置信度 阈值自动应用修复替换执行步骤从恢复位置重新跑。跑通了固化用例。又失败了回退原用例。置信度 阈值弹出人工审核展示步骤 diff倒计时等你确认。超时自动拒绝。这个置信度机制设计得很有人性——宁可漏点不可误点。在自动化测试里点错位置比没点到危害大得多。点错了可能把用户数据删了没点到最多就是测试失败。AI 深谙职场生存之道多做多错少做少错但不做不错在这里不适用因为不做测试就白跑了。4.3 五类根因诊断AI 的病历本AI 诊断能识别五类根因**UI 变更**按钮位置移动、文案变更、新增/删除元素 → 修正步骤描述。**流程变更**操作顺序改变、新增中间页面 → 插入/调整步骤。**App Bug**功能异常、错误提示、崩溃 → 不修复标记为 Bug甩锅给开发。**数据问题**特定页面数据或内容不存在 → 指出数据问题甩锅给数据组。**前置步骤失效**前面步骤标记为 ✓ 但实际没产生预期效果 → 回退到更早步骤重新来。看到没AI 不仅会修还会甩锅。UI 变更和流程变更它自己修。App Bug 和数据问题它明确标记这不是我的锅。前置步骤失效它懂得从源头解决问题。这情商比很多职场老油条还高。4.4 三个真实自愈案例AI 的妙手回春案例一按钮搬家了原始步骤“点击底部工具栏的某功能按钮”。结果失败了找不到按钮。AI 一看截图按钮跑到页面顶部功能菜单栏去了。诊断UI 变更置信度 0.9。修复“点击页面顶部功能菜单栏的对应按钮”。这就像一个朋友问你我钥匙放哪了你说在桌上结果不在。AI 不是傻乎乎地继续找桌子而是环顾四周发现钥匙在沙发上然后告诉你在沙发上。案例二进页面需要额外操作原始步骤“点击入口”。结果点击后没进入目标页面。AI 诊断后发现页面需要额外等待和二次点击。修复方案在步骤后插入等待然后重新点击。原始[tap] 点击入口 → 失败 修复[tap] 点击入口 [wait] 等待目标页面加载完成 ← 新增 [tap] 再次点击入口按钮 ← 新增这就好比你去敲门没人开。正常人不会一直敲而是等一会儿再敲。AI 现在也学会这个道理了。案例三弹窗遮挡导致后续全崩冷启动 App 后弹出确认弹窗遮挡了首页。后续步骤全部失效。AI 洞察到中间步骤虽标记为 ✓但实际未产生预期效果。诊断结果“前置步骤失效”。执行指针回退到步骤 2在启动 App 后插入条件 Action 处理弹窗。这个案例最精彩。传统脚本遇到这种情况只会一路报错到底像多米诺骨牌一样全倒。AI 能看出来第一张牌倒的方式不对然后把牌扶起来重新摆。这已经不是自动化测试了这是自动化擦屁股。4.5 置信度AI 的胆小心态系统有两条铁律MatchedText 必须从截图中逐字符复制不允许脑补。宁可不点击也不点错。置信度校准锚点1.0 精确匹配正常执行0.8 微小差异正常执行 0.5 语义相关但文本不同拒绝执行 0.2 完全没有匹配元素拒绝执行。0.5 的阈值怎么来的大量实测调优的结果。阈值太高大量操作被拒绝执行效率低阈值太低误点风险上升。0.5 这个数确保通过即正确的高可信度。就像相亲宁缺毋滥宁可单身也不能随便找个人凑合。AI 的婚恋观比很多人都正。五、能力三VLM 跨平台一套脚本打天下5.1 截图即真理像素级理解ai_uitester 的核心执行模型是截图 → 理解 → 执行闭环。VLM 看到的是像素级截图不是 DOM 结构。这意味着什么跨平台天然统一。同一套指令Android、iOS、HarmonyOS 都能执行。因为 AI 看的是图不是代码。按钮在截图里长什么样AI 就认什么样不管底层是 Java、Swift 还是 ArkTS。天然免疫 UI 变更。按钮移位了AI 照样能找到因为它看的是视觉位置不是固定的坐标或 ID。所见即所得。测试逻辑与人类看到的界面完全一致。人类说点击右上角那个红色的按钮AI 也是这么理解的。这就好比以前请三个翻译分别懂英语、法语、日语。现在请了一个会看图说话的人你给他看菜单图片他直接告诉你点什么。简单粗暴但有效。5.2 统一 API说人话就能驱动执行引擎提供了一套统一 API涵盖操作、断言、查询、等待等类别ai_action自然语言驱动的多步操作。比如打开得物 App搜索 AJ1。ai_tap单次点击。比如点击登录按钮。ai_swipe滑动。比如向上滑动浏览商品列表。ai_assert断言验证。比如断言页面显示’登录成功’。ai_query从截图提取数据。比如提取当前商品价格。同一条 JSON 脚本三端通用无需任何修改。{steps:[{type:tap,instruction:点击底部导航栏第一个Tab「社区」},{type:tap,instruction:点击页面右上角的发布按钮},{type:assertion,instruction:断言页面出现功能入口}]}以前写三端测试相当于同一个笑话要讲三遍每次还得换方言。现在讲一遍AI 自动翻译成各地方言。这就是技术进步带来的……摸鱼自由。5.3 底层驱动自动选择上层无感知根据设备类型系统自动选择对应的底层驱动框架Android 本地 → LocalAndroidDriverOpenATXAndroid 云端 → AppiumAndroidDriveriOS 本地 → LocalIOSDriverOpenATX WDAiOS 云端 → AppiumIOSDriverHarmonyOS → HosDriverHypiumWeb → PlaywrightWebDriverChromium上层代码完全无感知。你写点击登录按钮底层是 Android 还是 iOS不用关心。这就像打车。你打开 App输入目的地点确认呼叫。至于派来的是比亚迪还是特斯拉司机是老王还是小李你不需要知道。你只关心能不能到。这就是封装的艺术也是偷懒的艺术。5.4 BaseAIDriver感知-决策的核心循环BaseAIDriver 是全平台驱动的抽象基类实现了核心循环截图 → 大模型解析 → 决策执行 → 记录日志 → 重新截图这个循环最多执行 20 轮。点击操作配套置信度校验查询知识库后还会强制继续运行。Prompt 工程有四大约束每次只做一个动作。每步操作后屏幕状态变化逐步执行确保每步决策基于最新画面。元素匹配严格规则。MatchedText 必须从截图逐字符复制Confidence 0.5 返回 Action: Null。高优先级知识自动注入。弹窗、权限、登录页等无需在用例中显式编写VLM 自动处理。平台差异化适配。Prompt 根据平台自动切换系统操作指令上层代码无感知。20 轮上限怎么来的怕 AI 陷入死循环像某些人一样在 App 里转来转去找不到出口。强制继续运行是为了防止 AI 查完 Wiki 就偷懒不干活。这些约束设计得很像管理一个聪明但有点懒的员工——给他明确目标设定时间限制检查工作质量还不能让他摸鱼。六、架构设计的灵魂拷问6.1 为什么逐步执行而不是一次规划UI 测试的核心挑战是状态不确定性。每步操作后屏幕都会变预先规划可能基于过时信息。代价是单次操作可能多轮 LLM 调用最多 20 轮。但通过深度思考子目标分解来平衡。这就像下棋。你不能开局就把所有步数想好因为对手每走一步局面都变了。AI 测试也一样App 每响应一次下一步的判断基础就变了。所以得走一步看一步而不是闭着眼睛冲。6.2 为什么置信度阈值是 0.5大量实测调优的结果。在准确率和覆盖率之间取得平衡。阈值太高大量操作被拒绝执行效率低。阈值太低误点风险上升。0.5 确保通过即正确的高可信度。这个数值背后是无数测试用例的血泪史。就像你设手机密码太简单容易被破解太复杂自己记不住。0.5 就是那个既安全又能记住的甜蜜点。6.3 为什么自愈返回完整步骤列表而不是增量 Diff增量 Diff 在多次修复后索引容易偏移。完整列表更直观可靠。Token 消耗更大但避免了修复引入新 Bug。这就像装修。你是愿意要一份完整的施工图纸还是只给你看改了哪几块砖完整图纸费纸但靠谱。局部修改省纸但容易把承重墙拆了。七、行业对比三条路线的殊途同归7.1 传统方案Appium / Selenium / XCUITest基于元素定位通过 ID、XPath、Accessibility ID 等找元素再执行操作。优势执行速度快毫秒级社区成熟CI/CD 集成完善。劣势跨平台重复建设UI 变更即失效维护成本线性增长无自愈能力。这就好比用地图导航。地图准的时候很快但地图一过期你就得下车问路。而且每个城市的地图还不一样你得出差带三张地图。7.2 AI 辅助方案Test.ai / Applitools在传统框架上叠 AI。要么用 CV/NLP 替代硬编码定位器要么用 VLM 对比截图 Diff 做视觉回归。优势降低定位器维护成本自然语言可读性好视觉回归能发现传统断言遗漏的问题。劣势本质仍是元素定位跨平台仍需适配自愈仅限于重定位按钮从底部移到顶部能找到但交互流程变了就没办法无业务理解。这就像给自行车装了个电动马达。确实省力了但遇到墙该撞还是撞。AI 辅助方案能帮你找元素但理解不了为什么这个步骤失败了。7.3 AI Native 方案ai_uitester以 VLM 为执行引擎截图→理解→执行闭环替代元素定位。VLM 不仅识别 UI 元素还理解页面语义、业务流程和上下文。知识库将业务规则与测试执行解耦。这就不是给自行车装马达了这是直接换了一辆自动驾驶汽车。你告诉他去哪他看路、理解路况、自己做决策。你甚至可以在后座睡一觉——当然目前还不建议真睡毕竟置信度阈值才 0.5。八、写在最后AI Native 的 UI 自动化测试不是让 AI 帮忙写 XPath而是让 AI 像人一样看屏幕、理解业务、做出决策。它解决了传统测试的三个核心痛点用例迁移成本高、调试效率低、三端维护成本翻倍。通过 VLM 视觉理解、LLM 智能生成、Wiki 知识库、自愈诊断等能力把 QA 从人形复读机和人肉翻译器的困境中解放出来。当然这不是说 QA 要失业了。相反QA 可以把精力放在更有价值的事情上——设计测试策略、分析业务风险、优化用户体验。让 AI 做重复劳动让人做创造性工作。毕竟AI 能看截图、能点按钮、能修脚本但 AI 不会在产品上线前夜一边吃着泡面一边跟开发说这个 Bug 必须修不修我不签字。这种职场魄力暂时还是人类专属。技术的终极目标不是取代人而是让人更像人。—— 一个刚被 AI 抢了翻译饭碗、但获得了摸鱼自由的 QA 如是说。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01