V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Cynicsss
V2EX  ›  分享创造

一句话让 AI 帮你做 UI 测试,多模态测试智能体 AUITestAgent 来了!

  •  1
     
  •   Cynicsss · 147 天前 · 1373 次点击
    这是一个创建于 147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    让大模型帮你做 UI 测试,具体详情可关注:

    Github 项目地址: https://github.com/bz-lab/AUITestAgent
    论文标题:AUITestAgent: Automatic Requirements Oriented GUI Function Testing

    美团到店研发平台团队携手复旦大学周扬帆教授团队,共同开发了智能化终端测试工具——AUITestAgent 。该工具是第一个能够基于自然语言测试用例,自动化完成终端 UI 测试驱动、校验全流程的智能化测试工具。仅需输入自然语言形式的测试需求,AUITestAgent 通过多个智能代理( Agent )的合作,自动化的进行从交互到检查的全链路测试过程,包括:自动与终端应用进行交互,然后执行对交互过程的检查,最后输出对应的测试结果。

    以对美团 App 的测试为例,测试人员输入测试需求“查看景点门票频道中自然风光下第一个景点的评分,检查其评分在不同页面上是否一致”。如下方视频和图片所示,AUITestAgent 从美团首页出发,自动搜索并进入美团门票频道,查看自然风光下的第一个景点的评分页面;然后,AUITestAgent 将检查交互过程,从中提取所需的信息,进行判断并给出理由。

    具体效果视频可见:

    https://github.com/user-attachments/assets/48341d06-bc05-4b71-accd-c8a1c7215834

    demo1

    在英文场景下,AUITestAgent 表现也同样出色:在 Facebook 场景下输入测试需求:"Send a post with content 'Hello everyone' and like it, check whether it is correctly displayed, and whether the like button turns blue."如下方视频和图片所示,AUITestAgent 将自动完成了推文的发送和点赞;然后,AUITestAgent 提取所需的信息,并根据两个校验要求依次进行了检查。

    https://github.com/user-attachments/assets/8c0a33ab-11ab-4f95-b767-678472e8d902

    demo2

    在实现上,AUITestAgent 创造性地提出了交互与检查解耦的双流结构。通过将测试任务分解为交互和检查两个正交的子任务,降低了任务的复杂性,从而提高了任务的成功率和项目的稳定性。

    例如,对原始测试需求"Send a post with content 'Hello everyone' and like it, check whether it is correctly displayed, and whether the like button turns blue" ,首先利用 Agent 将其分解为: “发送一条内容为" Hello everyone"的推文并点赞”这一交互指令“检查推文发送后是否在主页显示”、“检查点赞后点赞按钮是否变为蓝色”这两个校验指令,再分别进行交互和检查。

    具体而言,AUITestAgent 的工作流程如下图所示,其包含三个主要部分:

    overview

    1. 任务分解模块( Task Decomposer ):AUITestAgent 首先将原始的测试需求分解为交互指令和多个校验指令,分别作为后续交互和检查模块的输入。
    2. 交互模块( GUI Interaction Module ):接受分解后的交互指令,动态组织代理以处理不同难度的交互指令,实现与终端应用的图形用户界面( GUI )的直接操作,最后生成交互过程信息。
    3. 检查模块( Function Verification Module ):接受分解后的一到多条校验指令,采用多维度数据提取策略,对交互过程信息进行分析,形成最终的测试报告,包括测试结果和原因分析。

    交互模块

    交互模块通过多个基于 MLLM 的智能代理( Agent )协作,实现根据交互指令自动与终端应用进行交互,其工作流程如图所示:

    3_interaction

    交互模块包含 5 个 Agent ,通过合作分别处理具体和抽象的交互指令:

    对于明确指明每一步需要如何操作的具体交互指令,交互模块将会通过观察者( Observer )、选择者( Selector )和执行者( Exectuor )的合作,依次执行其中的每个操作。其工作流程如下:

    • 首先,Observer 识别当前 UI 页面中的所有可交互的 UI 元素并推断其功能,从而辅助后续 Selector 选择交互的目标 UI 元素。Observer 接受多模态的输入——UI 截图和对应的 XML 文件,从而尽可能全面地识别 UI 页面中的所有可交互组件,并推断其功能。对于 XML 文件,Observer 会对其进行解析,收集文件中可交互的节点及其文本等辅助信息;而对于 UI 截图,Observer 使用来自美团的vision-ui 视觉模型进行识别和 OCR 。通过多模态的信息互补,Observer 将处理后的 UI 截图和整理后的 UI 元素信息提供给 MLLM ,对 UI 元素的功能进行推断。例如,对于美团首页,处理后的 UI 截图和 MLLM 的回复如下:

      Observer
    • 然后,Selector 根据自然语言形式的单步 UI 操作命令,从预置的 UI 操作集合中进行选择。例如,当前交互指令是“点击外卖按钮”,Selector 会根据 Observer 的输出和 UI 截图,生成"Click 4"操作命令。

    • 最后,Executor 在终端应用上执行由 Selector 生成的 UI 操作。

    而对于那些抽象的交互指令,会引入两个新的 Agent:规划者( Planner )和监控者( Monitor )。

    • Planner 首先根据交互命令制定当前 UI 页面上操作计划,计划中的每一步都是自然语言形式的,然后再具体执行计划中的每一步。举例而言,当处于上图的美团首页,指令是“查看景点门票频道中自然风光下第一个景点的评分”时,Planner 生成的计划为:“1. 点击搜索框,2. 输入'门票',3. 点击搜索”。
    • Monitor 则是用于判断交互命令是否已经完成(即用户的意图是否已经实现)。Monitor 将基于当前的 UI 截图和已执行的操作进行判断。如果命令已完成,交互模块输出交互过程信息并停止。否则,Monitor 将为 Planner 提供其判断理由作为制定计划的反馈。

    检查模块

    检查模块理解校验指令,从交互过程信息中抽取需要的信息,最后基于这些信息判断其是否符合测试用例中的预期。值得注意的是,对于多个校验指令,检查模块将逐一进行检查,例如对于“检查推文发送后是否在主页显示”和“检查点赞后点赞按钮是否变为蓝色”这两个校验指令,检查模块运行了两次分别进行信息抽取判断。其工作流程如下:

    3_verification

    检查模块从多维度分析,精准筛选并提取关键信息,既最大限度地保留有助于判断的要素,又有效过滤了无关数据,从而提高了判断的准确性和效率。多个维度包括:UI 页面的功能描述、关键 UI 元素信息和到达当前状态的操作信息等。例如,在检查美团门票景点评分一致性时,对于某个景点的详情页,检查模块的分析如图所示:

    Page Type

    然后,检查模块会综合多个页面抽取的信息,进行最终的判断。如下图中所示,检查模块分别抽取了三个页面的评分,最后进行一致性判断:

    demo1

    实验结果

    我们使用两个自定义的基准( benchmark )分别评估了 AUITestAgent 执行交互和检查的性能。两个基准包括 8 个广泛使用的商业应用(即美团、小红书、豆瓣、Facebook 、Gmail 、LinkedIn 、Google Play 和 YouTube Music ),分别包括 30 个交互任务和 40 个检查任务。

    同时,为了评估 AUITestAgent 在不同交互指令下的执行效果,我们根据完成交互指令所需的交互步数和交互指令的详细程度两个指标,将交互任务的难度分为三个级别:简单( L1 )、中等( L2 )和困难( L3 )。对于每个级别,我们构建了 10 个交互任务,并且描述在英文和中文之间均匀分配。

    交互效果评估

    我们为工具的交互效果制订了 4 个指标,指标的制订既兼顾了测试场景的特殊性,也参考了其他基于 LLM 的 Agent 项目(也即两个 baseline ,MobileAgentAppAgent)的指标制定。全面考虑工具完成交互的正确性、指令遵循的准确性和交互的执行效率,详细定义可见我们的论文。这 4 个指标分别为:任务成功率( Task Completion ,TC )、正确步数占比( Correct Step ,CS )、正确路径占比( Correct Trace ,CT )和交互效率( Step Efficiency ,SE )。

    可以发现,AUITestAgent 在 L1 中准确完成了 100% 的任务,在二级任务中完成了 80%,在三级任务中完成了 50%。此外,通过人工验证交互,AUITestAgent 生成并执行的交互中有 94% 与人类保持一致。这些指标表明,AUITestAgent 在将自然语言命令转换为 UI 交互方面显著优于 baseline 。

    interaction

    检查效果评估

    检查基准包含的 40 个任务,由 20 个校验指令对应的共 40 个交互过程信息组成。具体而言,每个校验任务关联了两个交互过程信息,一个是正确的,另一个包含了我们人工手动注入的异常。

    由于我们是该领域的首个工作,我们选用了 GPT-4o 并为其构建了一个多轮对话的提示词作为实验基线方法(详细实验设计参见我们的论文),而在实际业务使用的场景下,我们使用了其他模型。

    我们分别统计了工具在无异常的交互日志( Correct Function Verification )和存在异常的交互日志( Anomaly Detection )上的运行结果。其中,Oracle Acc.表示正确判断的任务的比例,只有当一个任务中的所有测试预言被正确判断时,才认为检查任务成功。同样地,Point Acc. 和 Reasoning Acc. 分别衡量单个测试预言判断的准确性和解释的正确性。此外,我们还统计了不同方法中大模型的 Token 消耗数,对比两者的成本。

    verification

    通过实验我们发现,AUITestAgent 对注入的 UI 功能异常的召回率达到 90%,同时保持了仅 4.5% 的低误报率。由于异常检测比正确功能验证难度更大,AUITestAgent 在异常检测上的效果略逊于其在正确功能验证上的效果;除此之外,GPT-4o 在异常检测上的效果不佳,也证实了这一点。

    落地效果评估

    自 AUITestAgent 推出以来,以美团的沉浸态视频场景为例,进行的 10 轮回归测试中,它发现了 4 个有效异常,突显了其在复杂商业应用 GUI 测试中的实际优势,其中一个异常如图所示。

    RQ3

    总结

    我们提出了 AUITestAgent ,首个基于自然语言驱动,实现操作、校验全流程的智能化终端测试智能体。在这个工作中,创造性地提出了交互与检查解耦的双流结构,提高了驱动与校验的准确性,达到了可工业落地的水平。

    为了评估 AUITestAgent 的效果,我们提出两个自定义基准,在其上的实验表明,AUITestAgent 在 UI 交互方面显著优于现有方法,并且能够召回 90% 的注入错误,误报率仅为 4.5%。

    此外,在美团的落地使用过程中的效果展示了 AUITestAgent 进行复杂商业应用 UI 测试的实际收益,这些突显了使用 AUITestAgent 在实际终端中进行大规模自动化 UI 测试的潜力。

    此项工作我们会持续更新,感兴趣的同学可以关注下 https://github.com/bz-lab/AUITestAgent ~~

    1 条回复    2024-07-18 17:37:54 +08:00
    delai
        1
    delai  
       145 天前
    我猜这篇文章是学校那边的同学写的:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4976 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 08:27 · PVG 16:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.