Page 97 - 《软件学报》2025年第4期
P. 97
香佳宏 等: 大模型在软件缺陷检测与修复的应用发展综述 1503
杂, 涉及诸多关联数据和应用, 在执行相同操作的情况下, GUI 页面可能也并不相同 (例如, 在余额充足和不足的情
况下, 点击购买按钮将会得到不同的反馈, 但余额未必会显示在当前的 GUI 页面上). 这使得基于学习的技术难以
学习此类复杂情况并做出准确的预测 [100] .
除了前文所述的挑战之外, 传统和基于学习的 GUI 自动化测试技术在处理一些更为复杂的交互场景时表现
不如人意. 这些场景包括测试工具与文本输入部件的交互、执行复合输入以及生成复杂的事件序列输入等. 在这
些需要与 GUI 组件进行深度智能化交互的场景下, 现有技术往往难以达到理想的测试效果.
(1) 文本输入: 文本输入部件对于用户输入的文本通常有严格的格式规定和约束. 因此, 对于传统和基于学习
的 GUI 自动化测试技术而言, 生成符合约束的文本一直是一项具有挑战性的任务. 面对这一挑战, 传统技术 [82,83,85,86]
尝试直接使用预定义的候选文本作为测试输入, 或分析并提取源代码和文本输入部件的约束并通过启发式规则生
成测试输入 [89] . 进一步, Liu 等人 [101] 利用 RNN 模型对文本输入相关部件进行预测, 但该工具需要大量人工编写的
数据用于模型训练, 并且没有充分考虑上下文语义信息. 综上, 研究者尝试了诸多方法解决这一挑战, 但效果依然
有限 [102] .
(2) 复合的事件输入: 部分 GUI 页面需要同时对多个部件进行输入 (即复合的事件输入) 才能访问后续 GUI 状
有强大的自然语言生成能力, 并能够深入理解应用程序
态. 例如, 填写日期信息需要选择页面上“年”“月”“日”这 3 个部件. 传统或基于学习的 GUI 自动化测试技术通常只能
迭代地生成单个输入事件, 并且难以分析输入事件之间的逻辑联系, 因此在处理复合的事件输入上效果不佳 [100] .
(3) 复杂事件序列输入: 某些 GUI 状态需要复杂的输入 (例如, 特定的 GUI 操作序列) 才能触发 [103] , 而这些操
作往往和应用程序的功能逻辑紧密相关. 例如, 测试一个电子商务应用程序的购物功能, 可能需要浏览商品、选择
商品、选择相关型号、选择支付方式、输入送货信息、确认订单共 6 个步骤的操作才能完成. 而传统和基于学习
的 GUI 自动化测试技术难以分析测试输入事件间的联系, 在理解应用程序的功能逻辑上效果不佳, 因此难以对此
类功能进行较为有效的测试.
总的来说, 现实中的移动应用程序功能复杂, 不同的应用场景可能包括数百甚至数千个不同的 GUI 页面, 并
且每个 GUI 页面都具有独特的交互逻辑 [103] . 传统和基于学习的技术虽然能生成多样的测试输入事件, 以实现一
定的测试覆盖率, 但依然测试效果有限, 并且在理解应用程序的功能逻辑和 GUI 交互逻辑上存在一定挑战. 因此,
GUI 自动化测试迫切需要一种更加智能的技术, 用以模拟真实用户的交互行为, 从而更智能地测试移动应用程序.
3.3 基于大模型的 GUI 自动化测试技术
如第 3.2.5 节所述, 传统和基于学习的 GUI 自动化测试技术存在一定挑战, 在实际应用中仍需测试人员手动
构造测试脚本和文本输入. 并且, 在移动应用快速迭代的今天, GUI 页面的频繁变更导致自动化测试的维护成本较
高. 此外, 由于传统和基于学习的技术优化目标大多以测试覆盖率为导向, 在真实场景下的 GUI 漏洞往往存在误
报漏报等问题, 进而影响这些技术落地应用的效益. 与此同时, 研究者们注意到大模型在自然语言理解、生成与逻
辑推理等方面均表现出优异的性能, 并体现出一定的智能. GPT 模型的强大的理解能力证明大模型可以理解人类
的知识, 对 GUI 页面的状态进行自动化判断, 并可以模仿人类与 GUI 界面进行互动而无需测试人员手动构建交互
脚本 [104] . 具体而言, 鉴于前文关于传统和基于学习的技术所面对的关键挑战 (见第 3.2.5 节), 将大模型用于 GUI 自
动化测试, 主要有以下几个方面的特性.
(1) 智能的文本输入生成: 许多文本输入部件有着严格的格式规定、语法规则等输入约束条件限制, 只有满足
这些约束条件的文本输入才能触发后续的 GUI 状态. 大模型在预训练过程中充分学习了大量相关信息和知识, 拥
GUI 的上下文语义信息. 因此, 大模型在理解 GUI 文本输
入部件的隐含约束进而生成满足约束的文本输入上具有显著优势 [102] .
(2) 生成复合的事件输入: 部分复杂的 GUI 页面需要同时对多个 GUI 部件进行输入, 才能访问后续状态. 大模
型的训练语料库中包含了大量的应用程序文档和测试报告等相关信息的自然语言描述, 这些描述有助于大模型理
解 GUI 的复合操作, 从而使得基于大模型的 GUI 自动化测试工具有可能实现复合的输入事件生成.
(3) 复杂事件序列的生成: 部分应用程序的 GUI 缺陷需要复杂的事件序列才能触发. 目前, 大模型具有较强的