不要点点点了,让你的AI同事来测试前端
这是一个基于 VRT 产品技术方案的前端 E2E 测试经验总结。
经过一段时间的开发和摸索,研究了自动化测试和主流的 MCP 之后,总结出比较符合目前我在工作中所需要的测试方案,并实现了一个自动化测试软件(https://vrtest.cn/),软件测试视频放在文章末尾。
技术架构图如下:
核心综述:构建“刚柔并济”的测试分层体系
在传统的前端 E2E 测试中,我们常陷入“脚本维护成本高”与“视觉覆盖不全”的困境。基于 VRT (Visual Replay Tester) 的实践经验,我针对自动化测试的边界有了重新的认知。
核心策略在于构建一个多层次自动化体系:底层通过“录制回放”保障核心业务的绝对刚性,中层利用“CDP 语义”解决复杂交互的健壮性,顶层引入“视觉 AI”与“智能 Agent”处理非标渲染与开放式任务。
策略一:稳态回归——高保真录制与自愈技术
适用场景:冒烟测试、固定业务流程回归(如电商下单、表单提交)。
核心经验
传统的录制工具容易因 UI 微调而失效,单纯的 DOM 录制是不够的,必须引入混合定位与视觉兜底。
双重定位保障: 首选策略:基于唯一 CSS 选择器进行精准操作。 降级策略(自愈):当选择器失效时,不应直接抛出错误,而是自动切换至空间坐标系。系统记住录制时的点击位置,结合当前的视口信息进行“盲操”,这能挽救约 30% 因前端微重构导致的脚本失败。 像素级视觉断言:功能跑通不代表 UI 没崩。在关键步骤(Checkpoints)强制进行视觉 Diff,确保渲染层面的零缺陷。
策略二:破局非标场景——纯视觉 AI (Pure Vision)
适用场景:Shadow DOM 隔离组件、高度混淆代码、Canvas 绘图、Web 游戏。
核心经验
当 DOM 不可达时,唯一的真理是“用户看到什么”。
脱离代码依赖:不解析 HTML,而是利用 VLM (Vision Language Model) 像人类一样通过截图理解屏幕。 成本与速度的平衡(混合模式): 纯视觉方案推理成本高、延迟大。 最佳实践:采用 "CDP + Vision" 的混合模式。系统默认使用 CDP(Chrome DevTools Protocol) 获取轻量级语义信息,仅在遇到无法识别的黑盒区域(如 Canvas 画布内部)时,才按需唤起高算力的大模型。这种“快慢系统”的结合显著提升了 ROI。
策略三:语义驱动——基于 CDP(Chrome DevTools Protocol) 的深度交互
适用场景:动态复杂页面、高频交互场景、抗脆性要求高的测试。
核心经验
传统的 XPath 或 CSS Selector 极其脆弱,基于无障碍语义树 (Accessibility Tree) 的测试才是未来的标准。
透过现象看本质:不依赖 div > span:nth-child(2)这种脆弱的结构,而是依赖Role="button", Name="Submit"这种稳定的语义。即便页面重构,只要业务语义不变,脚本依旧健壮。智能剪裁(Token 优化): 直接将整棵 DOM 树喂给 AI 会导致 Token 爆炸且推理变慢。 关键优化:实施动态剪裁算法。根据当前的 Viewport 和交互上下文,只提取“即时可用”的语义节点。这让 AI 的响应速度得到提升。
策略四:终极形态——智能 Agent 与脚本化闭环
适用场景:探索性测试、模糊指令执行(“百度帮我搜索一下周杰伦的演唱会”)。
核心经验
从“执行指令”进化为“解决问题”,并解决 AI 测试不可控的难题。
Agentic Workflow (MCP):基于“观察-思考-行动-修正”的循环,让 AI 具备自主纠错能力。 创新点:AI-to-Script (一次探索,多次运行): 痛点:每次运行都跑一遍 AI Agent,成本太高且结果可能有随机性。 解决方案:将 Agent 的探索过程持久化。系统记录 AI 的决策路径,将其转化为标准的、确定性的测试脚本(Markdown/Code)。
| L1 | 高保真录制 | ||
| L2 | CDP 语义交互 | ||
| L3 | 纯视觉 AI | ||
| L4 | 智能 Agent |
终极目标
创造一个前沿且闭环完整的全自动无人驾驶测试设计。这个方案最大的亮点在于它实现了一次 AI 探索,永久脚本资产的转化,将高成本的 AI 推理转化为低成本的工程化脚本。
VRT 全链路自主测试架构方案 (The "Fire & Forget" Solution)
1. 核心设计理念
“Given a URL, Return a Report.”系统接收一个路由(URL),由智能 Agent 担任“测试工程师”角色,自主完成从视觉感知、测试规划、混合执行到脚本固化的全过程。实现零人工干预的端到端(E2E)测试覆盖。
2. 自动化执行流程 (Pipeline)
整个流程分为四个阶段:感知规划 -> 混合执行 -> 资产固化 -> 回归验证。
阶段一:初始化与视觉感知 (Perception & Planning)
路由注入:用户仅需输入目标 URL(如 https://app.example.com/dashboard)。全屏视觉扫描 (VLM Scan):
Agent 打开浏览器渲染页面。 调用 VLM (Visual Language Model) 对页面进行截图分析。 语义提取:识别页面类型(如“登录页”、“数据看板”)、核心功能区(“导航栏”、“搜索框”、“提交按钮”)。
Agent 根据识别到的组件,自动生成测试规划 (Test Plan)。 例:识别到输入框和按钮 -> 规划测试用例:“1. 输入有效文本;2. 点击提交;3. 验证跳转。”
阶段二:自适应混合执行 (Adaptive Execution)
核心引擎,采用MCP (Model Context Protocol) + VLM 的双模驱动。
路径 A:MCP 高速通道 (优先) 逻辑:对于标准的 HTML 元素(Input, Button, Link),Agent 通过 MCP 协议直接调用底层 CDP 接口。 动作:精准注入文本、触发点击事件。 优势:速度快、稳定性高、可记录为标准代码。 路径 B:VLM 视觉直觉 (兜底) 触发条件:当 MCP 无法获取语义(如 Canvas 画布、极度混淆的 DOM、ShadowRoot 内部)时。 逻辑:调用 VLM 进行“AI 直觉判断”。 动作:计算目标图像坐标,模拟鼠标物理点击;或进行视觉断言(“这看起来像个红色的报错信息”)。
阶段三:资产沉淀与脚本化 (Script Generation)
Agent 的操作不再是“阅后即焚”,而是实时转译。
实时录制:Agent 的每一步 MCP 调用和 VLM 决策,都被记录在行动日志中。 脚本编译: 系统将行动日志编译为标准自动化脚本(如 Playwright/Puppeteer 代码或 JSON 格式的 VRT 脚本)。 关键点:对于 VLM 执行的步骤,脚本中会通过截图指纹或相对坐标进行固化,确保下次无需 AI 也能回放。 截图基准库:在关键节点自动截取“金丝雀快照” (Baseline Screenshots),作为后续视觉回归的对比标准。
阶段四:回归验证与报告 (Validation & Reporting)
自动化回放验证:立即运行刚刚生成的脚本,验证脚本的稳定性(Self-Check)。 视觉回归对比:比对执行后的页面截图与预期快照,计算像素差异。 报告生成:输出包含操作日志、关键截图、Diff 结果和覆盖率统计的 HTML 报告。
3. 技术架构
各层级说明:
Input Layer: URL / Route。 Brain Layer (Agent): 负责视觉感知 (Vision) 和 任务规划 (Planning)。 Action Layer (Hybrid): MCP Driver: 处理 80% 的标准 DOM 操作。 Visual Driver: 处理 20% 的非标/黑盒操作。 Output Layer: Test Script: 可复用的自动化代码。 Test Report: 包含视觉 Diff 的测试结果。
4. 方案核心价值总结
AI 成本最小化 (One-time Cost, Lifetime Value):
我们只在“初次探索”和“生成脚本”阶段大量消耗 Token 和算力。 一旦脚本生成,后续的回归测试(CI/CD)仅运行固化的脚本,成本趋近于零。
通过 VLM 视觉方案,彻底解决了 Canvas、WebGL 等传统自动化工具束手无策的场景。
不仅仅是执行,还包括了“生成 -> 验证 -> 报告”的完整闭环,确保交付的是可信赖的测试结果。