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] 对于大模型的划分方法. 具体而