资讯动态

AI驱动自动化测试工具实测:如何用自然语言替代XPath,解决UI选择器维护难题

发布时间:2026/10/20 10:04:48 来源:尧图企业网站定制
中午在技术群里刷到一条消息某科技巨头开源了一个主打AI驱动的自动化测试工具。消息一出群里的反应几乎和我预想的一样先是“卧槽又一个颠覆级项目”再是“以后写UI自动化是不是不用维护选择器了”最后还有一句“那些老牌自动化框架是不是真的该慌了”。我当时的想法比较冷静。做测试开发这些年见惯了所谓“XX替代YY”的标题党所以我没有急着站队而是花了一个下午把它下载下来从环境搭建到真实跑通一个购物App的登录下单流程认真走了一遍。这篇文章不打算复述官方文档也不想做夸大宣传就从一个一线测试工程师的角度聊聊它到底解决了什么老问题、上手体验如何、有哪些宣传里不会提的坑以及我们团队最终会怎么选择工具。如果你正在做移动端UI自动化或者你所在团队正被脚本维护率折磨得头疼这篇内容应该能给你一些具体参考。1. 它解决的是“选择器维护”这个底层伤痛做UI自动化的朋友应该都有过这种经历昨天还跑得好好的脚本今天前端改了一版布局页面层级动了一下测试直接红了一片。改脚本本身不算难难的是你根本不知道它为什么会挂。因为传统UI自动化的核心逻辑是“定位控件”。不管你是用ID、XPath还是用文本属性本质上都是把测试目标简化成一串可以被程序精确匹配的属性。前端加一个View层级XPath就失效产品改了一个按钮文案文本匹配就找不到对象某个控件从外层挪到了内层所有依赖它的用例全部得跟着改。这些问题的根子在于我们把“测试对象”理解成了“一串属性”而不是人眼看到的真实界面。1.1 传统UI自动化的死穴选择器生命周期我记得刚入行那会儿跟过一个迭代特别快的电商项目版本两周一个小版本一个月一个大版本。前一周刚把所有用例的选择器修稳定下一周新版打包出来又是三分之一的选择器失效。当时团队里专门有两个同事每天只干一件事就是对着报错日志修XPath。这个维护成本不是线性增长而是指数级。页面越复杂控件越多任何一个层级变化都可能引起连锁失效。更麻烦的是有些前端框架以后还会动态渲染组件同一个控件在不同状态下结构完全不一样你没法用一个固定的XPath覆盖所有情况。团队最后经常变成“脚本维护人员”而不是“测试开发人员”。这也是为什么很多自动化项目做着做着就废弃了投入产出比实在太难看。1.2 新工具的破局思路从“定位元素”到“理解界面”这款AI自动化工具的设计思路完全绕开了上面这套逻辑。它不再把界面当成一棵控件树而是当成一幅画面、一段语义。它内置了视觉理解和语义推理能力拿到一张屏幕截图之后会先识别出哪些是按钮、哪些是输入框、哪些是列表项、哪些是弹窗然后再结合你输入的自然语言指令去匹配目标最后通过底层驱动执行真实的点击、输入、滑动操作。举个最直观的例子。以前我想点击搜索按钮需要写类似这种代码driver.find_element(By.XPATH, //android.widget.LinearLayout[idsearch_layout]/android.widget.Button[text搜索]).click()用这个工具写同样的操作可能就是一句在首页搜索框中输入“降噪耳机”然后点击搜索按钮它不关心这个按钮在控件树里的位置是什么也不关心ID变了没有它看的是“屏幕上有一个按钮它的语义是搜索位置在搜索框右侧”然后直接操作它。这个改动看起来轻描淡写其实是把整个自动化测试的范式从“写定位器”转变成了“写意图”。你会突然发现脚本的阅读成本和维护成本都降了一个量级因为你要表达的不再是“怎么找到控件”而是“我要让界面做什么”。2. 核心引擎拆解它怎么做到“看见”和“推理”很多人看到“AI自动化”第一反应是玄学觉得底层无非是拿个大模型硬套。实际用下来它内部的工作流程其实非常清晰归纳起来就是三个阶段感知、规划、执行。这和人的操作方式很像。你打开一个App首先用眼睛看屏幕上有什么然后脑子里想我要先点哪里、再输入什么最后手上执行动作。这个工具就是把这三步全部自动化了而且每个阶段都留了可观测、可干预的接口。2.1 从自然语言指令到屏幕操作三个关键环节感知环节是整个工具的基石。它会把当前屏幕的截图发给视觉模型同时尽可能拿到系统层面暴露出来的控件树比如Android的View层级、Web页面的DOM结构然后把两者融合成一份“当前界面的结构化描述”。这份描述在底层大概是这样的当前页面有顶部导航栏、搜索框、推荐商品卡片列表、底部Tab栏以及每个可操作元素的坐标位置和语义标签。你不需要读懂这份描述但它决定了后续所有推理的准确性。规划环节负责把自然语言步骤拆解成可执行的原子操作。比如“注册一个新账号并登录”这句话它会被拆成启动App等待首页加载完成点击底部“我的”标签点击“注册”按钮在手机号输入框填入测试号码点击“获取验证码”填入验证码设置密码点击“完成注册”校验是否跳转到登录后的个人中心页面拆解之后再按依赖关系排序检测前置条件比如注册页没有加载出来时点击注册按钮就没有意义所以必须先等待页面就绪。执行环节是最有意思的。它并不只是机械地把动作发送到设备而是每完成一步就截图对比一次确认“我要操作的元素是不是真的变了”。如果发现界面变化和预期不符它会触发失败自愈机制重新理解当前界面尝试修正操作。2.2 失败自愈机制执行出错后工具做了什么这里我重点讲一下它和传统框架最大的区别——面对失败时的处理方式。传统框架遇到“元素找不到”直接抛异常脚本终止。它的逻辑是“我按规则没找到就是失败你去检查环境吧”。而这款AI工具遇到异常时会做一系列补救动作重新截取当前屏幕图像将当前屏幕内容与预期目标做语义对比寻找与目标最相近的可操作组件如果找到继续执行并把这次修正记录到日志里你可以把它理解成你让一个新人去点“保存”按钮他第一次点到了“草稿”抬头看一眼发现不对然后自己重新找到真正的“保存”点下去。传统框架在同样情况下只会站在门口喊“我找不到‘保存’两个字”然后就罢工了。这个能力在真实项目中非常实用尤其是前端频繁改动布局的场景。按钮从页面上方挪到下方位置变了但语义没变AI工具大概率还是能找到。它关心的是“这个界面上有没有一个叫保存的按钮”而不是“保存按钮的坐标在哪里”。这也是为什么它在应对版本频繁迭代的App时稳定性明显比传统选择器方案高。3. 实测登录和下单一次跑通的完整过程光看原理还不行我直接用一个模拟购物类Demo项目做了一轮完整实测。这个项目我本地叫“某商城Demo”首页有搜索框、商品分类、商品列表、详情页、购物车、结算流程是典型的电商核心链路很能说明问题。整个实测下来给我印象最深的不是它能把步骤跑通而是整个测试用例的编写方式彻底变了。下面我按步骤还原一下全过程。3.1 环境准备与最小启动示例安装这块比我想象中简单它直接作为一个Python包分发依赖项也不多pip install ai-auto-testing装完以后初始化一个移动端测试项目ai-auto-testing init mobile这个命令会在当前目录生成一个最小化的工程结构包括配置文件、测试用例目录、报告输出目录。配置文件的重点是告诉工具被测App的信息比如包名、启动入口、以及要连接哪个设备。注意新项目接入时最容易忽略的是设备环境。安卓设备和电脑之间要提前做好连接授权不然工具连设备都发现不了后面全白搭。我建议先单独执行adb devices确认设备在线再做后续步骤避免把问题定位到工具本身。最小测试用例长这样用YAML格式写意图不需要写代码testcases: - name: 登录冒烟测试 steps: - action: 启动某商城Demo - action: 点击右下角的我的 - action: 点击登录按钮 - action: 在手机号输入框输入13800000000 - action: 点击获取验证码 - action: 在验证码输入框输入123456 - action: 点击登录 - check: 页面出现用户头像和昵称一个测试用例本质上就是你平时用文字写的一条测试步骤。没有任何XPath没有resource-id没有等待时间的硬编码。3.2 从编写指令到生成报告一次完整运行的观察执行方式也是一条命令ai-auto-testing run login-test我观察了它实际跑的过程。它会启动模拟器或真机上的App每一步执行前会先截图并分析界面判断当前状态然后再执行动作。比如“点击右下角的我的”这句话工具先识别到屏幕右下角有一个“我的”Tab确认它是可点击状态再执行点击。整个登录流程跑完一共用了52秒。传统自动化脚本同样流程优化得好大概35到40秒慢一点可能要一分钟以上。从速度来说它并不占优因为每一步都多了视觉推理的耗时。但稳定性表现让人意外。我故意把“某商城Demo”的界面做了一次改动把登录按钮从页面右上角移到了中部把手机号输入框的ID也改了。传统脚本如果没同步更新选择器100%必挂这个AI工具重新跑了一遍除了日志里多了两条“元素位置变化已自动适配”的记录之外整个用例一次性通过。它还会自动生成一份测试报告里面包含每一步的截图、操作内容、耗时、以及界面变化前后的对比。这对后期排查问题很有帮助不用再像以前那样靠录视频来追锅。4. 宣传文案不会告诉你的四类问题工具确实好用但我也必须说几句公道话它离“万能”还差得挺远。如果你准备直接上生产环境下面这几个问题最好先心里有数。4.1 相似控件过多时AI也会犯糊涂电商首页的商品卡片通常是类似结构一个屏幕上有十几个长得差不多的卡片。如果你说“点击第三个商品”它偶尔会点错。因为视觉模型对“第几个”的理解有时不够稳定尤其是当页面在快速滚动时。解决办法是给指令加更明确的语义约束例如点击标题为“某品牌无线耳机”的商品卡片有了具体文案作为锚点准确率就高很多。如果界面上的卡片标题也不可读只有图片那就得提前给图片加备注或者改用相对坐标区域限定。4.2 一次运行成本不低要控制推理频率这是最容易被忽略的现实问题。AI工具每执行一步基本都要调用一次视觉理解能力每次调用都有模型成本。如果一个用例有50步跑一遍就是50次推理连续跑上百个用例消耗不是一个小数目。我们在内部压测时发现登录下单这类长链路用例如果全流程开启视觉理解单条用例的成本大概比传统脚本高一个数量级。这也意味着它的目标场景不是“海量回归”而是“少量核心链路深度保障”。如果你打算把它用在几百上千条全量回归上要么预算充足要么得设计缓存机制。经验可以给项目配置“视觉快照缓存”同一个页面在短时间内只做一次视觉分析后续步骤直接复用结果。这个选项在配置文件里默认关闭但强烈建议按实际场景打开能明显降低成本。4.3 部分场景它真的搞不定我实测了几个它应付不了的场景列出来给大家避坑视频流类页面界面上持续快速变化的内容视觉模型很难稳定跟踪目标比如短视频信息流、直播弹层。纯自定义渲染控件有些游戏引擎或重度自定义View控件树为空截图语义也弱工具基本相当于“睁眼瞎”。跨进程混合内容比如App内嵌H5页面如果WebView的调试通道没有打开它拿不到DOM只能靠截图猜精度会降低。需要跨App操作的长链路例如要从AppA跳转到AppB再跳回来路径一复杂感知和规划就容易出错。这些场景下传统框架配合明确的控件定位反而更可靠。所以至少现阶段它不是一个可以无脑替代一切的工具更像是一个很聪明的特长生。4.4 历史脚本兼容性几乎为零如果你团队已经有一套用传统自动化框架写好的用例想平滑迁移到这个AI工具上基本是要重写。它虽然支持导入App的包信息但不会帮你把已有的XPath脚本转成自然语言用例。这也提醒了我们一件事迁移前一定要评估存量脚本的价值。如果旧脚本本身维护成本高、失败率高那重写反而是计算机反正旧脚本早晚要废如果旧脚本跑得很稳只是因为周期长那就没必要为了追新而全部推倒重来。5. 它真的会取代传统自动化框架吗我的决策建议聊到这儿标题那个问题终于绕不开了它会不会让传统自动化框架无路可走我的答案非常明确短期三到五年内不可能彻底取代。但它一定会切走一大部分市场尤其是那些被选择器维护折磨到想放弃自动化的团队。5.1 传统框架和AI工具的核心能力对比我把实测中感受比较深的差异整理成了表格方便大家按自己的场景对照对比维度传统自动化框架AI驱动的自动化工具用例编写方式代码/XPath/ID定位自然语言描述操作意图界面变更适应能力选择器失效后必须人工维护自动重新理解界面语义多数情况可自愈执行速度快因为不需要人工智能推理较慢每一步都有视觉推理开销稳定性界面稳定时极高变更后极低界面变化时表现好但复杂界面仍会误判技能门槛需要会写代码、懂元素定位基本不需要代码业务人员也能上手运行成本几乎可忽略按推理次数计费长期大量运行成本偏高适合场景全量回归、海量稳定用例核心链路冒烟、频繁迭代期的探索性验证历史脚本迁移无需迁移基本要重写兼容性差看完这个表你会发现它们不是替代关系而是各有所长的互补关系。5.2 建议采用的三层测试策略如果是我在团队里主导这个选型我会把自动化测试拆成三层来排兵布阵第一层用AI工具覆盖核心业务冒烟链路。比如登录、注册、搜索、加购、支付这些链路改动最频繁失败影响最大非常适合AI工具的自愈能力。前端再怎么改布局只要功能没变这条链路就能持续跑。第二层用传统框架守住大规模回归用例。成熟稳定的模块、几乎不需要改动的页面用传统框架完全够用执行速度快成本低没有必要给AI工具增加负担。第三层用AI工具辅助测试用例的生成。它还有一个很实用的能力你只需要把需求文档或者手工测试步骤贴进去它就能帮你产出结构化的测试步骤。我们团队现在已经在用这个方式评审需求在写代码之前就先暴露可测试性的问题。5.3 我最终怎么和团队说的那天复盘的时候我跟团队讲了一个观点真正让传统框架头疼的不是AI工具的识别能力有多强而是它把自动化测试的门槛拉低了。以前写UI自动化你得懂元素定位、懂代码、懂框架机制这天然就把很多业务测试同学挡在门外。现在用自然语言就能写用例业务同学自己就能把核心流程覆盖起来。这种“人人都能写自动化”的变革比模型本身更让老框架难受。但我也提醒团队工具越智能对工程规范的要求就越高。自然语言用例看着简单但可维护性取决于你怎么组织页面语义、怎么命名操作目标、怎么设计检查点。你不维护再智能的工具也会变成一堆难以理解的开放式描述。我在实际试用里最大的体会是AI自动化最值钱的地方不是“不用写代码”而是“让测试更接近人的真实理解”。当我们把精力从选择器上解放出来才有机会去思考更重要的测试策略和风险把控问题。最后再分享一个小建议。无论你最终选不选这类工具我都建议你周末拿一个小Demo试试它生成用例的能力。不一定要立刻替换生产框架但提前感受一下“写意图而不是写定位器”的思路对你未来设计测试方案一定有帮助。技术总在往前跑早点上手总比被时代推着走舒服。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑