瑞典马工

不要点点点了,让你的AI同事来测试前端

这是一个基于 VRT 产品技术方案的前端 E2E 测试经验总结。


经过一段时间的开发和摸索,研究了自动化测试和主流的 MCP 之后,总结出比较符合目前我在工作中所需要的测试方案,并实现了一个自动化测试软件(https://vrtest.cn/),软件测试视频放在文章末尾。

技术架构图如下:

Image

核心综述:构建“刚柔并济”的测试分层体系

在传统的前端 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高保真录制
100% 复现,零代码成本
核心流程冒烟,固定回归
L2CDP 语义交互
极高健壮性,抗 UI 变动
复杂表单,动态单页应用
L3纯视觉 AI
无视 DOM 限制,所见即所得
Canvas,游戏,第三方插件
L4智能 Agent
自主探索,生成可复用脚本
新功能探索,模糊任务,脚本初始化

终极目标

创造一个前沿且闭环完整的全自动无人驾驶测试设计。这个方案最大的亮点在于它实现了一次 AI 探索,永久脚本资产的转化,将高成本的 AI 推理转化为低成本的工程化脚本。


VRT 全链路自主测试架构方案 (The "Fire & Forget" Solution)

1. 核心设计理念

“Given a URL, Return a Report.”系统接收一个路由(URL),由智能 Agent 担任“测试工程师”角色,自主完成从视觉感知、测试规划、混合执行到脚本固化的全过程。实现零人工干预的端到端(E2E)测试覆盖。


2. 自动化执行流程 (Pipeline)

整个流程分为四个阶段:感知规划 -> 混合执行 -> 资产固化 -> 回归验证。

阶段一:初始化与视觉感知 (Perception & Planning)

  1. 路由注入:用户仅需输入目标 URL(如 https://app.example.com/dashboard)。
  2. 全屏视觉扫描 (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. 方案核心价值总结

    1. AI 成本最小化 (One-time Cost, Lifetime Value):
    • 我们只在“初次探索”和“生成脚本”阶段大量消耗 Token 和算力。
    • 一旦脚本生成,后续的回归测试(CI/CD)仅运行固化的脚本,成本趋近于零。
  • 解决“不可测”难题:
    • 通过 VLM 视觉方案,彻底解决了 Canvas、WebGL 等传统自动化工具束手无策的场景。
  • 闭环验证:
    • 不仅仅是执行,还包括了“生成 -> 验证 -> 报告”的完整闭环,确保交付的是可信赖的测试结果。

    软件视频展示
    设计思维导图
    Image