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

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


                 the  prestigious  ChatGPT,  trained  on  massive  datasets,  can  capture  complex  patterns  and  structures  in  code,  process  extensive  contextual
                 information,  and  flexibly  adapt  to  various  tasks.  Their  superior  performance  has  attracted  considerable  attention  from  researchers.  In  many
                 software  engineering  tasks,  technologies  based  on  LLM  show  significant  advantages  in  addressing  key  challenges  previously  faced  in
                 different  domains.  Consequently,  this  study  attempts  to  analyze  and  explore  three  defect  detection  domains  where  technologies  based  on
                 LLM  have  been  widely  adopted:  deep-learning  library  defect  detection,  GUI  automated  testing,  and  automated  test  case  generation,  along
                 with one mature software defect repair domain: automated program repair (APR). This study delves into the progress of these domains and
                 provides  an  in-depth  discussion  of  their  characteristics  and  challenges.  Lastly,  based  on  an  analysis  of  existing  research,  this  study
                 summarizes the key challenges faced by these domains and technologies and offers insights for future research.
                 Key words:  large language model (LLM); defect detection; deep-learning library defect testing; automated test case generation; automated GUI
                         testing; automated program repair
                    随着信息化进程的深入, 软件应用成为社会发展和人类生活各个领域中不可或缺的重要部分. 与此同时, 软件
                 缺陷的问题引起了研究人员的广泛关注. 软件缺陷会影响软件的正确性、可靠性和效率, 甚至可能对用户的生命
                 财产造成重大损失. 在核电站、医疗设备等关键基础设施中, 软件缺陷可能导致灾难性的后果. 同时, 修复软件缺
                 陷需要消耗大量的时间和人力资源            [1,2] , 为软件开发者带来了巨大的压力. 因此, 软件缺陷的检测和修复任务被认
                                                    GPTDroid
                 为是软件工程领域的一个重大挑战.
                    多年以来, 研究人员已经提出并实施了各种策略和方法来检测和修复软件缺陷, 包括静态代码分析                                [3,4] 、动态
                 测试  [5,6] 、符号执行  [7,8] 和形式化验证  [9,10] 等. 这些方法在一定程度上有助于挖掘软件缺陷, 自动修复代码错误, 或
                 者生成测试用例. 然而, 这些方法存在一些局限性. 例如, 静态代码分析可能产生大量的误报; 动态测试可能覆盖不
                 全; 符号执行和形式化验证则需面对状态爆炸问题. 而且, 开发者往往需要专家级的知识和经验来选择合适的策略
                 并进行有效应用. 例如, 在缺陷自动修复任务中, 基于模板的自动修复技术                     [11,12] 需要开发人员和研究人员针对特定
                 类型的漏洞人工制定修复模板. 虽然这样的方式可以很有效地进行修复, 但是由于人工编写修复模板成本高, 可移
                 植性差, 限制了这一方法的应用.
                    近年来, 预训练大语言模型, 如        GPT  系列  [13,14] 、BERT  系列  [15,16] 模型, 以其优秀的性能吸引了大量研究人员的
                 关注. 这些模型在自然语言处理领域取得了令人瞩目的成果, 也被越来越多地应用到软件工程领域. 大模型有几个
                 显著的特点使其在处理软件缺陷任务上表现突出. 首先, 它们能够捕捉代码中的复杂模式和结构; 其次, 它们可以
                 处理大量的训练数据, 并从中学习到有用的知识和模式; 最后, 它们可以灵活地适应各种任务, 如代码理解、代码
                 生成、缺陷检测、缺陷修复和           GUI 自动测试等. 研究表明, 大模型在测试用例自动生成、缺陷自动修复等软件工
                 程任务上, 相较于传统方法, 取得了更好的效果.
                    我们发现大模型在软件缺陷上的相关工作集中发表在                   2023 年软件工程顶级会议上, 例如        ICSE [17] 、ISSTA [18] 、
                 ASE [19] 、ESEC/FSE [20] , 展现出一定的趋势性. 基于此, 我们对已经发表的基于大模型的文章在缺陷任务上进行了
                 分类, 进一步发现这些文章集中在两个方向: 缺陷检测和缺陷修复. 缺陷检测包括深度学习库的缺陷检测、GUI 自
                 动化测试两个系统缺陷检测领域以及测试用例的自动生成领域; 缺陷修复则主要集中在缺陷自动修复领域. 目前
                 在这  4  个方向上发表在顶级会议和期刊的基于大模型的相关工作已有                      15  篇, 包括深度学习库的缺陷检测         2  篇,
                 GUI 自动化测试    3  篇, 测试用例的自动生成      4  篇, 以及缺陷自动修复     6  篇. 许多基于大模型的研究在这        4  个领域的
                 性能表现显著超越了以往最佳基准线, 例如, 深度学习库缺陷检测领域的                       FuzzGPT [21] 在  PyTorch  上的代码覆盖率
                 较最佳基准线提高了        60.70%, 并发现了  49  个未被发现的错误; 测试用例自动生成领域的             LIBRO [22] 比最佳基线多
                 复现了   91  个错误; 而  GUI 自动化测试领域的             [23] 在活动覆盖率上相比最佳基线提高了          32%, 并以更快的
                 速度发现了    48  个未被发现的错误. 在修复领域, 缺陷自动修复领域的               FitRepair [24] 在  Defects4J 数据集上较最佳基
                 准线多修复了     23  个缺陷. 鉴于大模型在这      4  个领域取得的显著成果, 我们尝试对这些研究进展进行深入分析和探
                 讨. 具体来说, 本文采用以下流程完成对相关文献的获取.
                    (1) 本综述选用    ACM  电子文献数据库、IEEE Xplore       电子文献数据库、Springer Link     电子文献数据库、
                 Google 学术搜索引擎及     DBLP Computer Science Bibliography  等进行原始搜索. 对于大模型相关文献的搜索, 本综
                 述的搜索时间从      2020  年开始, 到  2023  年结束, 并采用与  Hou  等人  [25] , Pan  等人  [26] 对于大模型的划分方法. 具体而
   79   80   81   82   83   84   85   86   87   88   89