Page 92 - 《软件学报》2025年第4期
P. 92

1498                                                       软件学报  2025  年第  36  卷第  4  期


                 程序上进行训练来修改模型权重, 从而得到特别设计的大模型. 通过这些策略, 研究者得到了针对深度学习库漏洞
                 检测定制的大语言模型, 这些大模型有能力生成与历史漏洞类似的代码. 实验结果表明, FuzzGPT                           相较  TitanFuzz
                 分别在   PyTorch  和  TensorFlow  上提升了  60.70%  和  36.03%  的覆盖率, 并且在最新版本的  PyTorch  和  TensorFlow
                 上发现了   76  个漏洞.

                 2.4   小 结
                    深度学习库测试技术随着深度学习技术的广泛应用, 其重要性日益凸显. 自                        2019  年  CRADLE  技术被提出后,
                 该领域的技术快速更新发展. 研究人员首先尝试直接将模型作为输入对深度学习库系统进行测试. 然而这些技术
                 面对着测试输入模型数量有限而且耗时颇高、制定变异规则自动对模型进行突变成功率低等挑战. 因此, 研究者
                 进而尝试在    API 级别上分析特定深度学习库          API 的输入约束, 并根据约束为        API 生成测试   (通常是单行测试). 但
                 是在这个过程中, API 级别测试同样面临着深度学习库                API 约束复杂性的挑战. 为此研究人员尝试手动注释某些
                 深度学习库    API 的约束, 以达到更好的测试效果, 然而这个方法往往伴随着大量的人力成本开销, 难以被推广应
                 用. 伴随着大模型的火爆, 大模型的优越性能吸引了越来越多研究者的关注. 进而, 研究者尝试直接应用大模型到
                            GUI 自动化测试相关工作进行介绍.
                 深度学习库测试任务中. 由于大模型具有强大的自然语言理解能力、代码生成能力以及训练中学习了大量深度学
                 习代码, 研究者发现大模型可以自然地理解深度学习库                  API 的约束条件, 进而构建测试代码, 完全无需人类专家手
                 动构建规则和注释约束. 因而, 基于大模型的深度学习库测试技术达到了最优的测试效果.
                    有趣的是, TitanFuzz 和  FuzzGPT  在论文中都强调    LLM  隐含学习了深度学习库的使用和约束范式, 可以驱动
                 深度学习库的测试技术, 并且进一步阐述这样的思路可以迁移到其他程序语言和应用上. 然而这                               2  篇文章的实验
                 仅包含了最流行的       PyTorch  和  TensorFlow  深度学习库, 并没有拓展到其他深度学习库上. TitanFuzz 和       FuzzGPT
                 的技术有效性建立在大模型学习了数十万个                GitHub  相关项目的基础上, 但是对于其他一些未有丰富训练语料的
                 深度学习库, 大模型驱动的深度学习库测试能力还需要进一步探索. 目前大模型也在快速更新迭代, TitanFuzz 结
                 合了  OpenAI 公司  CodeX  模型和开源模型    InCoder、FuzzGPT  使用了  CodeX  和  CodeGen  模型, 同样为  OpenAI 公
                 司对话大模型     ChatGPT  进行了适配. 因此如何更好地利用更强大的开源模型                (例如  CodeLlama) 以及如何更好地
                 结合闭源大模型      (例如  GPT-4) 获得更优的测试效果, 还是该领域下亟需探索的课题.
                    与深度学习库系统相关测试技术发展相类似, 随着移动应用的快速发展, 移动应用中的                            GUI 自动化测试被越
                 来越多的研究人员和开发者重视, 并积累了大量宝贵的技术. 因此第                     3  节将聚焦于   GUI 自动化测试技术, 分析与
                 总结大模型在测试       GUI 缺陷的最新技术的发展动向.

                 3   GUI 自动化测试技术

                    近年来, 移动应用     (APP) 得到了蓬勃发展, 在     Google Play  和  Apple APP Store 中有超过  300  万个应用供下载,
                 这些应用共积累了数十亿的下载次数             [72,73] . 在移动应用中, 用户与应用的交互通常通过图形用户界面               (graphical
                 user interface, GUI) 进行. 具体而言, 用户与  GUI 的交互包括点击、滚动或向        GUI 元素  (如按钮、图像或文本块)
                 输入文本等. 在现实中, 用户的体验直接与应用程序               GUI 的稳定性相关, 因此确保应用程序的            GUI 按预期工作至
                 关重要. 然而, 在面对复杂的应用程序时, 人工测试             GUI 非常耗时且成本高昂, 难以被企业接受            [74] . 诸多研究者尝
                 试解决这一挑战, 提出了大量         GUI 自动化测试工具. 本节将首先简要介绍            GUI 自动化测试技术机制, 然后介绍传
                 统和基于学习的技术以及这些技术所面对的关键挑战. 在此基础上, 分析大模型应用于这一任务的潜力并对目前
                 基于大模型的

                 3.1   GUI 自动化测试技术机制简介
                    GUI 自动化测试涉及多个部分, 包括          GUI 测试输入生成、GUI 元素检测、GUI 测试框架、GUI 测试的记录
                 与重放、GUI 测试脚本维护、GUI 测试报告分析以及                GUI 测试评估等    [75] . 其中, GUI 测试输入生成是研究的重
                 点, 因此本文将对这一部分进行重点介绍. 如图             6  所示, GUI 自动化测试机制可分为        3  个循环执行的步骤: (1) GUI
   87   88   89   90   91   92   93   94   95   96   97