AI agent驱动 UI 自动化测试最佳实践:从用例导入到可执行 Agent落地
AI 驱动 UI 自动化测试最佳实践:从用例导入到可执行 Agent
摘要:传统 UI 自动化最大的成本不是“写脚本”,而是“页面一变脚本就废、人手不够维护不动”。这篇文章分享我们基于 LLM Agent 做 AI UI 自动化测试的落地实践:自然语言用例、业务系统知识包、自动执行与 PASS/FAIL 判定,以及最终打包成 Windows / macOS 本机可执行程序的完整链路。
一、为什么选择 AI Agent 而不是传统脚本
传统 UI 自动化的典型成本:
- 定位器写死,页面一改全部返工
- 用例编写门槛高,业务测试同学没法直接维护
- 多系统、多环境维护成本指数增长
AI Agent 的方式把“怎么写脚本”变成“怎么说需求”:
from browser_use import Agent
agent = Agent(
task="打开 https://www.baidu.com,搜索「Browser Use」,把第一个搜索结果的标题告诉我",
llm=llm,
)
history = await agent.run(max_steps=30)
Agent 自己完成:打开页面 → 观察 DOM → 输入 → 点击 → 校验结果。
二、最佳实践 1:用例要“自然语言 + 结构化”
只给 Agent 一句话任务可以演示,但测试用例必须结构化,才能批量管理、筛选、统计、关联结果。
我们最终采用的用例模板字段:
| 字段 | 说明 |
|---|---|
| 模块 | 对应业务系统,自动匹配系统知识包 |
| 用例名称 | 人类可读的测试目标 |
| 前置条件 | 登录态、测试数据等 |
| 优先级 | P0-P3,批量执行时排序 |
| 测试描述内容 | 自然语言操作步骤,可多行 |
| 测试预期 | Agent 判定的通过依据 |

三、最佳实践 2:业务系统知识包,而不是页面填地址
多系统测试时,让用户在页面填“被测系统地址”很不友好。我们改成了“业务系统知识包”:一个系统一个 SKILL.md,统一维护地址、业务背景、登录方式和执行注意。
---
name: xx系统
aliases: 统一认证
environments:
测试: ${xx系统_TEST_URL}
预发: ${xx系统_PRE_URL}
---
## 业务背景
xx系统 是统一认证平台,负责账号密码登录、动态口令校验。
## 关键流程
1. 打开登录页
2. 输入账号密码
3. 输入动态口令
执行用例时,系统根据 Excel 里的“模块”自动匹配知识包,把业务上下文注入 Agent 任务:
【业务系统】xxx系统
【系统环境】测试
【系统地址】先打开 http://...
【操作步骤】1、... 2、...
【预期结果】...
请逐条执行,最终必须以 PASS:或 FAIL:开头说明结果。
此处以百度为实例:
---
name: baidu
aliases: 百度, Baidu
environments:
测试: https://www.baidu.com
生产: https://www.baidu.com
---
## 业务背景
百度是主流搜索引擎,核心是网页搜索和图片搜索。
## 关键流程
1. 打开搜索首页
2. 输入搜索关键词
3. 点击「百度一下」

好处:
- 用例只关心“测什么”,不关心“系统在哪”
- 环境切换只改
.env/ 知识包 - Agent 有业务背景,动作更准
四、最佳实践 3:页面导入用例,批量串行执行
Web 控制台支持:
- 上传 Excel 用例库
- 勾选单条或全部执行
- 实时日志
- 一键停止
- 运行中任务列表
批量执行按优先级排序串行跑,避免浏览器资源冲突;执行结果按 case_id 关联,页面展示每条用例的 PASS / FAIL 和结论。成功失败用例自截图 输出测试报告。



五、最佳实践 4:结果判定要“自证”
AI 执行完不能只说“完成了”,必须让它证明:
- 任务里带上预期结果
- 要求最终回复必须以
PASS:或FAIL:开头 - 说明实际结果与差异
- 输出测试结果报告,每个用例每个步骤截取关键运行步骤图片。
这样页面可以直接按前缀判定,不需要解析大段自由文本,失败用例也方便人工复核。
PASS:百度首页已打开,标题为「百度一下,你就知道」,搜索框和按钮正常显示。
六、最佳实践 5:部署成用户能双击的本地程序
调研远程 CDP 时我们发现一个现实问题:新版 Chrome / macOS 的调试端口只监听 127.0.0.1,服务器远程驱动另一台机器的 Chrome 非常不方便。
所以我们把产品形态做成:
- 中心化 Web 控制台用于多人管理用例和结果(可选)
- 本地可执行程序:双击启动,自动打开页面,用户在自己的电脑和浏览器上执行测试
PyInstaller 打包:
# macOS
bash packaging/build_macos.sh
# Windows
packaging\build_windows.bat
输出:
macOS: dist/TestPilot
Windows: dist/TestPilot.exe
七、踩坑清单
- 模型必须支持 function calling:浏览器 Agent 靠结构化动作输出控制页面,纯对话模型跑不起来
- DeepSeek 不支持 OpenAI 的 json_schema response_format:要关闭强制结构化输出,改走 function calling
- 验证码 / 动态口令 / 2FA:AI 不能猜验证码,这类用例要接真实动态码来源,或复用已登录浏览器
- 账号密码不要写进用例:放环境变量或知识包外部配置
- 新版 Chrome 远程调试只监听 127.0.0.1:跨机器远程驱动需要隧道/转发,或改用“浏览器和程序同机”的本地部署
- 用例也是资产:结构化、带模块、带预期结果,才能批量统计和做回归报告
八、离线agent实现方式 - 人人可along形式的agent测试工具(灵感来自deepseek harness形式)
目前这套已经能支撑:
- 自然语言写用例,业务同学可直接维护
- 多系统通过知识包自动匹配
- 单条/批量执行 + 实时日志 + 停止
- 打包成 exe / macOS 程序,用户本机直接跑
- 只能体自恢复、自进化补充skill级业务处理能力(断言、doc元素等)
windows系统直接执行exe可执行文件即可在本地运行UI 自动化测试agent

本地私有智能体本地端口8765,直接访问即可实现每人一台自己的智能体自动化测试工具,完全结偶。

九、最佳实践 :跑完自动沉淀到系统知识包,越用越聪明
AI UI 自动化最理想的状态不是“每次重新理解系统”,而是每跑完一轮,系统越来越懂被测业务。
9.1 沉淀什么
每次测试执行完成后,自动从“本次成功的用例 + 页面实际结果”中提炼,写入对应系统的 SKILL.md:
| 沉淀内容 | 示例 |
|---|---|
| 系统/模块 | baidu / 网页搜索模块 |
| 页面功能 | 搜索首页、搜索结果页 |
| 关键元素 | 搜索框 textarea#kw、按钮「百度一下」 |
| 业务操作 | 打开首页 → 输入关键词 → 点击「百度一下」→ 核对结果 |
| 前置条件 | 可访问百度,无需登录 |
| 执行经验 | 搜索框可能被 AI 建议遮挡,优先按 placeholder 定位 |
| 失败记录 | 「百度一下」按钮疑似被 AI 助手按钮替代,下次先按文本确认 |
这样 Agent 下次执行同类用例时,先读 SKILL 里的“模块知识”,点击哪个按钮、填写哪个框、有什么前置条件都直接知道,而不是每次都从头探索。
9.2 自动沉淀的规则(实现方案)
我们计划按下面规则实现,防止“越沉淀越脏”:
- 只在用例成功时沉淀:失败用例可能暴露的是页面 bug,不能当作正常业务写入知识包
- 只沉淀页面有证据的内容:元素、按钮、提示文案必须来自本次执行日志/截图,禁止模型凭记忆补写
- 按模块合并,不覆盖人工内容:同一模块多次运行后,新的有效信息追加到“模块知识”,人工写好的业务背景永远保留
- 每条记录带来源:写入时标记
run_id和日期,方便回查是否可靠 - 保留人工审核入口:自动写入的内容统一放在“执行记录 / 自动沉淀”分区,测试负责人可以一键回滚
- 新增系统首次执行,先生成骨架:系统知识包不存在时,由 Agent 首次探索后生成目录结构,再逐步补模块细节
9.3 完整 SKILL 实例(以百度为例)
---
name: baidu
aliases: 百度, Baidu
environments:
测试: https://www.baidu.com
生产: https://www.baidu.com
---
## 业务背景
百度是中国主流搜索引擎,核心能力是网页搜索、图片搜索和资讯搜索。
## 关键流程
1. 打开搜索首页
2. 在搜索输入框输入关键词
3. 点击「百度一下」按钮
4. 在搜索结果页核对结果,可选翻页
## 模块知识
### 网页搜索模块
- 功能页面:百度首页 / 搜索结果页
- 关键元素:
- 搜索输入框(textarea#kw)
- 搜索按钮「百度一下」(按按钮文本定位)
- 搜索结果标题链接
- 分页「下一页」
- 业务操作:
1. 打开 https://www.baidu.com
2. 在搜索输入框输入关键词,例如 Browser Use
3. 点击「百度一下」按钮
4. 等待搜索结果加载
5. 断言出现相关搜索结果
- 前置条件:能访问百度,无需登录
- 用例经验:
- 首页标题为「百度一下,你就知道」
- 搜索结果页出现与关键词相关的结果
- 结果页底部可点「下一页」翻页
- 首页 AI 建议/热搜可能遮挡搜索框,优先按 placeholder 或输入框定位
### 图片搜索模块
- 功能页面:百度图片搜索
- 关键元素:图片搜索框、搜索按钮、图片结果列表
- 业务操作:
1. 打开 https://image.baidu.com
2. 输入关键词并搜索
3. 断言出现图片结果
- 前置条件:能访问百度图片
- 用例经验:页面标题包含「百度图片」
## 执行注意
- 搜索框可能被页面 AI 建议遮挡,优先按 placeholder 或输入框元素定位
- 页面加载慢时先等待网络空闲再操作
- 页面元素若变更,以最新执行日志为准,由自动沉淀流程追加
## 执行记录(自动沉淀)
- 2026-09-06 run_id=TC_BAIDU_001 PASS:首页标题与搜索框正常(网页搜索模块)
- 2026-09-06 run_id=TC_BAIDU_002 FAIL:首页疑似把搜索按钮换成了 AI 助手按钮(网页搜索模块)
- 2026-09-06 run_id=TC_BAIDU_003 PASS:百度图片页正常打开(图片搜索模块)
9.4 沉淀后的执行效果
第二次执行同一系统时,Agent 任务里会自动带上“模块知识”,它看到百度首页后不再反复尝试“哪个是搜索框、哪个是搜索按钮”,而是:
已从知识包获知:
- 搜索输入框:textarea#kw
- 搜索按钮:按文本「百度一下」定位
- 首页标题:百度一下,你就知道
直接输入关键词并核对预期结果。
这也是我们把“业务知识包”做成闭环的原因:执行 → 验证 → 沉淀 → 复用 → 更快执行。
完整运行一遍实例:
下面用一个真实的百度搜索场景,把前面讲到的“自然语言用例 → 知识包匹配 → Agent 执行 → 自证判定 → 结果沉淀”完整串起来,让你直观看到这套链路每一步发生了什么。
自由探索模式
自由探索模式适合“还不了解被测系统”的阶段。它不依赖任何预置用例,只给 Agent 一个开放目标,让它自己把系统摸一遍,产出一份结构化的探索报告,这份报告后续可以直接作为“系统知识包”的初稿。
#提示词 我随便写的 自由测试的话应尽量丰富
打开百度 自由探索百度的主页功能以及能力 ,每个工功能都点击进去探索,输出一份markdown格式的总结 具体功能、测试注意事项
执行过程如下:
- Agent 启动浏览器:自动打开百度首页,等待页面完全加载。
- 识别页面功能区块:Agent 通过观察 DOM 结构,识别出搜索框、热搜榜、导航栏(新闻、图片、视频、地图等)、底部版权信息等主要功能区块。
- 逐个功能点击探索:Agent 依次点击“图片”、“视频”、“地图”等入口,进入对应子页面,观察页面跳转是否正常、内容是否加载。
- 记录测试注意事项:在探索过程中,Agent 会把发现的异常或需要注意的点记录下来,例如“搜索框可能被 AI 建议遮挡”、“图片搜索页标题包含‘百度图片’”等。
- 输出 Markdown 总结:探索结束后,Agent 自动生成一份结构化的 Markdown 文档,包含功能清单、每个功能的操作路径、测试注意事项,以及初步的断言建议。

开始自执行打开了N个页面 开始自由探索

自由探索完成并输出了文档,这份文档可以直接作为该系统的 SKILL.md 骨架,后续再通过“自动沉淀”机制不断补充细节。

用例执行模式
用例执行模式是日常回归测试的主力。它基于 Excel 用例库,按“模块”自动匹配系统知识包,批量串行执行,并输出带截图和步骤日志的测试报告。
执行流程如下:
- 导入用例:在 Web 控制台上传 Excel 用例库,系统解析出每条用例的模块、名称、前置条件、优先级、操作步骤和预期结果。
- 匹配知识包:系统根据每条用例的“模块”字段,自动匹配对应的
SKILL.md,把业务背景、关键元素、操作经验注入 Agent 任务。 - 批量串行执行:按优先级从高到低排序,逐条串行执行,避免多个浏览器实例争抢资源。每条用例执行时,Agent 会实时输出日志,页面可随时一键停止。
- 自证判定:每条用例执行完,Agent 必须以
PASS:或FAIL:开头给出结论,并说明实际结果与预期差异。 - 自动截图与报告:每个关键步骤自动截图,最终汇总成一份带超链接的测试报告,点击截图缩略图即可查看大图。
导入用例并执行

测试运行完成 支持下载报告

打开报告测试每条用例后有智能体生成的详细运行过程,包括每一步的思考、动作和页面状态:

执行步骤每个步骤附有截图点击超链接可看截图,方便失败用例的人工复核:


执行汇总报告,按用例维度展示 PASS / FAIL 统计和结论:

跑完这一轮之后,系统会自动把“成功的用例 + 页面实际结果”沉淀回对应系统的 SKILL.md,下次执行同类用例时,Agent 就不再需要从头探索,直接按知识包里的“模块知识”精准操作——这就是前面讲的“越用越聪明”的闭环。
沉淀闭环 智能体同步skill

如果你也在做 AI 自动化测试,欢迎交流。
更多推荐



所有评论(0)