分享自:

基于大型语言模型的安卓应用间自动化测试迁移

期刊:Proceedings of the ACM on Software EngineeringDOI:10.1145/3728975

这篇文档属于类型a,它报告了一项单一的原创性研究。以下是基于文档内容生成的详细学术报告。


《基于大语言模型的Android应用间自动化测试迁移》学术研究报告

一、 研究团队与发表信息

本研究的主要作者是Benyamin Beyzaei(来自美国加州大学尔湾分校)、Saghar Talebipour、Ghazal Rafiei、Nenad Medvidović(以上三位来自美国南加州大学)以及Sam Malek(来自美国加州大学尔湾分校)。该研究成果以题为“Automated Test Transfer Across Android Apps Using Large Language Models”的论文形式,于2025年6月22日发表在《Proceedings of the ACM on Software Engineering》期刊的第2卷,是ISSTA (International Symposium on Software Testing and Analysis) 专刊的一部分。论文以开放获取形式发布,获得了南加州大学和加州大学尔湾分校的支持。

二、 学术背景与研究目标

本研究的科学领域属于软件工程,具体方向是移动应用测试自动化。随着移动应用在日常生活各个方面的普及,确保其质量变得至关重要。其中,针对用户界面(User Interface, UI)的端到端使用性测试(usage-based tests)是验证应用功能完整性和用户体验的关键手段。然而,手动创建和维护此类测试不仅耗时耗力,且容易出错,给开发者带来了沉重负担。

一个重要的观察是:尽管外观和实现方式不同,但属于同一功能领域(如购物、邮件、浏览器)的应用,其核心功能往往高度相似。基于此,学术界提出了测试迁移(Test Transfer)测试重用(Test Reuse) 的概念,即利用为一个应用(源应用)编写的已有UI测试,自动生成能在另一个具有相似功能的应用(目标应用)上执行的测试,从而避免从零开始编写测试。现有的测试迁移方法主要分为两大类:基于相似性的方法分类方法。基于相似性的方法(如CraftDroid、TRASM、Treadroid)主要通过计算事件序列之间的距离度量来进行匹配。这类方法在源应用和目标应用流程高度相似时效果显著,但在现实世界的复杂场景中(如应用流程不严格一一对应时)表现不佳,尤其难以准确迁移测试断言(oracle)。唯一的机器学习方法AppFlow则严重依赖于训练数据的应用类别,泛化能力有限,且适应新应用类别需要大量人工干预。

近年来,大语言模型(Large Language Models, LLMs) 在代码生成、代码摘要和软件测试等软件工程任务中展现了巨大潜力。这些模型经过海量数据训练,能够准确理解用户界面的语义,包括屏幕和组件的含义。受此启发,本研究旨在探究如何利用LLM中蕴含的丰富语义信息,来推动测试迁移技术的进步。因此,本研究的目标是提出并评估一种创新技术LLMigrate,该技术利用(特别是多模态)LLM来高效、准确地在移动应用之间迁移基于使用的UI测试,旨在克服现有方法在应对真实世界应用差异和准确迁移测试断言方面的局限性。

三、 详细研究方法与流程

LLMigrate是一个端到端的测试迁移解决方案,其核心思想是将测试从依赖于具体应用和框架的代码形式,先转换为易于LLM理解的语义化自然语言描述(抽象表示),再基于对目标应用UI的动态探索和语义理解,逐步生成目标测试。整个过程无需访问应用的源代码,仅通过动态分析实现,这增强了其在闭源(专有)应用上的实用性。具体工作流程包含两个主要阶段:

1. 源测试抽象(Source Abstraction) 此阶段的目的是将源测试(通常以特定编程语言和测试框架编写)转换为一种与平台、框架无关的自然语言内部表示,称为抽象源测试。这分为两个步骤: * 测试增强(Test Augmentation):首先,使用Appium测试框架在安装有源应用的设备上按步骤执行源测试。执行每个事件(event)后,从当前应用的UI布局层级(XML树)中提取被交互组件的详细信息,如resource-idcontent-desctextclass等属性。然后,将每个事件(包括UI事件、系统事件和断言事件)统一表示为三元组 (action, event_type, widget) 的形式,其中widget包含了所有提取到的有用属性。这样得到的“增强测试”序列便独立于任何具体的编程语言或测试框架。 * 抽象(Abstraction):接下来,LLM代理(LLM Agent)模块将上一步得到的增强测试序列作为输入,通过精心设计的提示模板(Prompt Template)咨询LLM(研究中使用了GPT-4o),请求其生成一个简短的自然语言段落来描述整个测试的功能和步骤。这个段落就是抽象源测试。它概括了测试的目的、关键的UI交互(如点击、输入文本)、输入的具体值以及断言检查点。例如,对于一个购物应用的注册测试,抽象源测试会描述为:“本测试验证注册功能,首先检查仪表板元素是否存在,然后导航到‘我的’版块,确认‘注册’按钮存在并点击,输入电子邮件‘sample@gmail.com’和密码‘samplepassword’,再次点击注册按钮,最后通过检查文本‘sample@gmail.com’是否存在来确认注册成功。”

2. 测试迁移(Test Migration) 这是核心迁移阶段,目标是利用抽象源测试的指导,在目标应用中动态探索,生成对应的目标测试。这是一个循环迭代的过程,由探索器组件(Explorer)UI自动化器(UI Automator)LLM代理(LLM Agent) 协同完成。每次迭代旨在为目标应用当前状态选择并执行一个最优的下一步事件,使执行序列逐步趋近于实现源测试的功能。具体步骤如下(对应图3中的步骤1至6循环): * 步骤1:状态捕获:从目标应用的初始屏幕开始,UI自动化器捕获当前屏幕的截图和处理后的UI布局层级(XML)。处理是为了去除冗余信息,保留关键组件类型(如按钮、输入框)。 * 步骤2/3:屏幕分析与事件选择: * 屏幕分析:LLM代理内的屏幕分析子代理利用LLM的多模态能力,同时分析屏幕截图和处理后的XML,生成一份屏幕分析报告。该报告描述了屏幕上的关键组件、它们的功能(自然语言描述)以及可能支持的操作(如是否可点击、是否可输入文本)。 * 事件生成初始/后续事件生成子代理根据当前输入(抽象源测试、处理后的XML、屏幕分析报告、以及已成功执行的事件序列记录),通过特定的提示模板咨询LLM。提示模板中定义了任务(迁移测试)、事件类型(UI、系统、断言)的格式规范、可用的具体操作(如点击、发送按键、等待元素出现)以及一些通用指导原则(例如:优先迁移断言事件、避免重复操作、如果源测试未提供值则根据字段名称生成合理的随机输入)。LLM基于对当前应用状态语义和测试目标的理解,输出一个符合格式的下一步事件。 * 为了减少LLM的非确定性和幻觉影响,研究采用了多数投票算法:对同一个状态多次(n=3)查询LLM,然后只采纳在多数(m=2)响应中都出现的事件字段和值。 * 步骤4-6:事件执行与状态更新:探索器记录LLM生成的事件,并将其发送给UI自动化器执行。执行后可能产生四种情况: * 情况1:成功:事件有效执行,应用进入新状态(或断言条件满足)。循环继续。 * 情况2/3:失败:事件无效(如定位器错误)或断言条件不满足,导致执行异常。探索器会将该事件标记为“死胡同”,回溯到上一步(重启应用并重新执行之前的有效事件序列),并通过一个包含反馈信息(上次错误的事件和具体异常)的修复提示模板重新咨询LLM,引导其修正错误。 * 情况4:无效(无状态变化):执行未引发异常但应用状态未改变。探索器通过比较前后状态检测到后,同样执行回溯和修复流程。 迁移循环持续进行,直到源测试中的所有断言都被成功迁移到目标测试中,或者达到一个可配置的尝试次数阈值。最终,探索器将所有成功记录的事件序列输出为目标测试。

四、 主要研究结果与分析

研究在公开的CraftDroid基准数据集上对LLMigrate进行了全面评估,涵盖浏览器、待办事项、购物、邮件客户端和小费计算器五大应用类别,共进行了120次测试迁移。评估通过以下四个研究问题展开,并与其他最先进的方法(CraftDroid, Treadroid, TEMDroid)进行了对比。

RQ1:LLMigrate在准确迁移UI测试方面的效果如何? 使用精度(Precision)召回率(Recall) 作为衡量指标。LLMigrate在所有迁移中,GUI事件的总体平均精度达到98%,召回率达到99%;断言事件的总体平均精度为94%,召回率为94%。在除购物类外的所有类别中,LLMigrate的这两项指标均优于或持平于对比方法。特别是在流程复杂的购物类应用上,LLMigrate相比之前表现最好的方法,在GUI事件的精度和召回率上取得了巨大提升(例如,精度从~44%提升至100%),证明了其基于语义理解而非严格一对一匹配的优势。断言事件指标稍低的原因分析是:LLM有时在能直接找到并操作组件时,会省略源测试中用于预先验证的断言,但这并不总是影响最终功能目标的达成。

RQ2:LLMigrate迁移出的测试有多大用处? 评估采用减少度(Reduction)成功率(Success Rate) 两个更能反映实用价值的指标。 * 减少度:衡量将迁移生成的测试手动修正为完美测试(ground truth)所需工作量,相比从零编写完美测试所减少的比例。LLMigrate的总体平均减少度达到91%,意味着它能节省超过九成的手工编写工作量。在所有类别上均显著优于对比方法(总体平均提升约38%)。尤其值得注意的是,在之前方法表现极差甚至为负值(意味着不如重写)的购物类应用上,LLMigrate仍取得了正的减少度(50%-78%),这是一个关键突破。 * 成功率:衡量迁移后的测试是否能成功达成源测试功能目标的二进制指标。LLMigrate在120次迁移中取得了97.5%的总体成功率,比之前最佳方法高出9.1个百分点。

RQ3:LLMigrate的性能和成本如何? * 时间性能:平均每次测试迁移耗时247秒,远快于CraftDroid(约90分钟)和TEMDroid(约537秒)。 * 经济成本:主要成本来自调用商用LLM API。平均每次迁移消耗约11.86万输入token和5,180输出token,按GPT-4o定价计算,成本约为0.70美元。平均每个测试步骤的成本约为0.12美元。

RQ4 & RQ5:在实际流行应用和LLM未见数据上的表现? 为了验证泛化能力,研究进行了两项补充实验: * 在当今流行应用上:选取了下载量巨大的现代应用(如Firefox, Zalando)进行迁移,LLMigrate平均成功率达98%,减少度达97%,表明其能适应现代应用的工作流。 * 在LLM未见过的数据上:特意选取了在GPT-4o知识截止日期(2023年10月)后发布的新应用类别(如EMI计算器、AI聊天机器人)和全新编写的测试用例。实验结果显示,LLMigrate在这些“未知”数据上依然保持高性能(平均成功率93%,减少度89%),证明了其方法的鲁棒性,而非依赖于LLM对特定应用的记忆。

这些结果之间存在着清晰的逻辑链条:首先,RQ1和RQ2的核心指标(高精度、召回率、减少度、成功率)直接证明了LLMigrate方法在技术上的有效性和实用性价值,它显著超越了现有技术。其次,RQ3的结果表明,这种性能提升并非以不可接受的时间或经济成本为代价,使其具备实际应用的可行性。最后,RQ4和RQ5的补充实验有力地排除了“LLM只是记住了训练数据中的旧应用”这一威胁,证实了LLMigrate核心方法论——利用LLM进行语义理解和决策——对于解决测试迁移问题的普遍有效性,为其未来的广泛应用奠定了坚实基础。

五、 研究结论与价值

本研究得出结论:LLMigrate,一种利用多模态大语言模型进行Android应用间UI测试迁移的创新技术,能够高效、准确地实现跨应用测试重用。它不仅在标准基准测试上以97.5%的成功率和91.1%的减少度刷新了性能纪录,而且在面对真实世界的应用差异、现代应用流程以及LLM未见过的数据时,都表现出了强大的鲁棒性和实用性。

该研究的价值体现在多个层面: * 科学价值:首次将多模态LLM系统地、创造性地应用于测试迁移这一具体软件工程任务,并设计了一套完整的工作流程(源抽象、动态探索、LLM引导的事件生成与修复)。这为如何利用AI前沿技术解决经典的软件测试自动化难题提供了一个成功的范例,开辟了新的研究方向。 * 应用价值:对于软件开发和测试实践者而言,LLMigrate是一个强大的生产力工具。它可以大幅降低为相似应用套件创建和维护端到端UI测试的成本与时间,助力持续集成/持续部署(CI/CD)流程。其无需源码的特性也使其适用于第三方应用的质量评估场景。 * 重要观点:研究证实了基于语义理解和推理的AI驱动方法,相比传统的基于语法相似性匹配的方法,在处理复杂、多变的真实软件系统交互时具有显著优势。这提示了软件工程自动化未来的一个重要发展趋势。

六、 研究亮点

  1. 方法论创新:提出了首个端到端、基于多模态LLM的UI测试迁移框架LLMigrate,巧妙地将测试抽象、动态探索、屏幕语义理解和迭代修复结合在一个闭环中。
  2. 性能突破:在关键指标(特别是减少度和成功率)上实现了对现有最佳方法的显著超越,尤其是在传统方法失效的复杂场景(如购物应用)中证明了其有效性。
  3. 强大的泛化与实用性:研究不仅使用了经典基准,还特意验证了工具在现代应用和LLM未见数据上的表现,全面评估了其实用性和鲁棒性,增强了结论的说服力。
  4. 问题解决全面性:LLMigrate不仅处理UI事件迁移,还专注于准确迁移测试断言(oracle),并能智能处理源和目标应用之间输入字段的差异(生成缺失值或跳过多余值),这是许多先前方法的短板。
  5. 详实的实验与对比:研究设计严谨,评估维度全面(精度、召回、减少度、成功率、时间、成本),并与多个主流技术进行了公平对比,数据支撑坚实。

七、 其他有价值内容

研究团队已将其实现代码、实验数据及详细的提示模板设计在GitHub上公开,这极大地促进了研究的可重复性和后续工作的开展。论文中也坦诚讨论了当前方法的局限性,例如对UI组件元数据质量的依赖、对短暂性UI元素(如Toast)的处理不足、以及对某些不可逆操作(如用户注册)后的错误恢复困难等,这些为未来的改进指明了方向。作者展望了将技术扩展到iOS和Web平台,以及结合视觉分析技术提升对非无障碍应用支持等未来工作,具有启发性。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com