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

香佳宏 等: 大模型在软件缺陷检测与修复的应用发展综述                                                     1499


                 提取分析; (2) 测试输入生成; (3) 与应用程序互动. GUI 测试工具通过迭代地执行这些步骤以覆盖不同的                          GUI 状
                 态, 从而检测相关漏洞.



                                                        测试输入生成
                                           输入事件序列                   GUI相关信息


                                                       当前状态程序信息

                                         与应用程序互动                       GUI提取分析
                                                图 6 GUI 自动化测试总体流程

                    (1) GUI 提取分析: 这一步骤涉及对应用程序           GUI 信息的提取和处理. GUI 自动化测试工具需要从当前状态
                 的应用程序中提取       GUI 信息, 分析应用程序的不同页面和其中的             GUI 元素. 这通常包括检测应用程序的           GUI 部
                                           GUI 自动化测试技术.
                 件, 如按钮、文本框、菜单等, 并识别可触发的              GUI 事件. GUI 自动测试工具必须准确识别这些            GUI 部件和相应
                 的可触发事件, 以便后续生成测试输入.
                    (2) 测试输入生成: 在    GUI 提取分析后, GUI 自动化测试工具将生成用于测试的输入事件序列, 其中包括                      GUI
                 事件和系统级事件. GUI 事件是直接对应用程序的用户界面元素                   (如按钮、文本框等) 进行交互的事件, 如按键输
                 入、触摸屏输入、手势输入等. 系统级事件是指来自操作系统或硬件设备的事件, 如屏幕旋转、电池状态变化、
                 来电等, 用于测试应用程序在不同系统条件下的响应情况. GUI 测试工具通过生成测试输入, 模拟真实用户在应用
                 程序中的操作, 从而实现对应用程序的探索和测试. 测试输入事件生成历来是                         GUI 自动化测试领域的研究重点,
                 传统的   GUI 自动化测试技术通常采用基于随机、基于模型和基于系统探索的方法来生成测试输入事件. 近年来,
                 研究者进一步尝试使用深度学习和强化学习等方法生成测试输入. 随着大模型技术被广泛研究, 研究者注意到大
                 模型在自然语言理解与生成以及逻辑推理等方面的优异性能, 并尝试利用大模型引导测试工具生成测试输入事
                 件, 以更智能地对应用程序        GUI 状态进行测试.
                    (3) 与应用程序互动: GUI 自动化测试工具生成的测试输入序列将被发送到真实或模拟的安卓设备上, 与目标
                 应用程序   GUI 界面进行互动. 具体而言, 测试工具在不同            GUI 状态下执行输入事件序列并尝试触发应用程序的不
                 同功能和界面, 以覆盖尽可能多的          GUI 活动. 在这个过程中, 测试工具将监视应用程序的响应, 并记录异常行为和
                 错误.
                    在迭代的测试过程中, 测试工具还会统计已经探索的                 GUI 状态和程序状态, 以计算代码和          GUI 活动覆盖率作
                 为评估测试效果和测试工具性能的重要指标. 下面, 我们将分析传统和基于学习的                          GUI 自动化测试技术中的经典
                 工作和关键挑战.

                 3.2   传统和基于学习的    GUI 自动化测试技术
                    由于输入事件序列的质量对于            GUI 自动化测试工具的效果起到至关重要的作用, 研究者尝试应用不同的策
                 略生成输入事件序列. 根据其策略的不同, 传统              GUI 自动化测试技术可分为        3  类: 基于随机的、基于模型的和基
                 于系统探索的     GUI 自动化测试技术. 而近年来, 研究人员也开始应用深度学习和强化学习等技术进行                         GUI 自动化
                 测试, 我们将其归纳为基于学习的

                 3.2.1    基于随机的  GUI 自动化测试技术
                    基于随机的     GUI 自动化测试技术根据启发式策略随机生成输入事件. 2007                 年, Google 发布的安卓框架中便
                 内嵌了最早的     GUI 测试工具   Monkey [76] . 该工具能够自动生成随机的      GUI 事件, 包括按键输入、触摸屏输入和手
                 势输入等. 然而, Monkey   并不考虑应用程序自身的          GUI 结构, 因此它可能会生成大量冗余和无效的输入. 在实际
                 应用中, 相较于程序      GUI 功能测试, 开发人员更多将       Monkey  应用在压力测试中.
   88   89   90   91   92   93   94   95   96   97   98