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

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


                 GPT-4V  展现了出色的图像理解能力, 能够准确分析用户提供的图像输入, 并以与人类相似的方式应答                             [197] , 这或
                 许十分契合    GUI 自动化测试领域. 此前, 许多基于学习的           GUI 自动化测试技术以被测应用程序的屏幕截图作为输
                 入, 以生成测试输入事件, 这充分展现了以图像输入驱动                 GUI 自动化测试的潜力       [75] . 通过将应用程序的当前屏幕
                 截图输入   GPT-4V  并根据其生成的操作指引对应用程序进行测试, 基于大模型的工具或许能实现与人类测试员行
                 为较为相似的     GUI 测试, 从而达到较好的       GUI 自动化测试效果. 然而, 目前基于大模型的主要工作使用的都是
                 OpenAI 公司的闭源模型, 这为公司和企业在实际应用过程中带来了进一步的挑战. 如                        QTypist 和  GPTDroid  使用
                 的都是   OpenAI 公司提供的    GPT-3  模型, 并在相关任务场景进行了微调. 但是由于            GPT-3  模型尚未开源, 对于需
                 要本地部署大模型的公司以及无法访问               OpenAI 服务的研究人员而言, 可能需要他们重新在其他开源模型如
                 Llama2  上进行复现. 然而, 模型的差别是否会影响已有工作             GUI 自动化测试方法的有效性目前尚不可知. 因此, 当
                 下迫切需要研究人员尝试基于开源模型提出一套                 GUI 自动化测试的解决方案.

                 6.3   测试用例自动生成

                    虽然基于大模型的测试用例生成技术在可读性、覆盖率等指标上均优于以往技术, 但依然面临生成测试的可
                 读性和有效性等方面的挑战. 已有研究人员开始尝试解决这一问题, 例如, CHATTESTER                       [47] 和  ChatUniTest  [136] 面
                                                       2021
                 对  ChatGPT  模型生成的测试用例验证成本高等问题, 尝试引入验证和修复组件, 从而提升大模型生成测试用例的
                 正确性. 然而, 这些工具的实际效果依然受到种种限制. 与此同时, 软件自动修复技术也在尝试应对类似的挑战. 在
                 软件自动修复中, 补丁测试往往占用了最多的时间和算力, 并且在实际的场景中, 构建自动测试补丁的框架的成本
                 通常极其高昂, 如何进一步优化补丁测试框架是值得研究者深入探究的方向. 有趣的是, OpenAI 公司在                            2023  年  3
                 月提出的代码解释器        (code interpreter) [198] 可以高效地验证模型生成的代码, 有望解决上述工作缺乏高效的编译器
                 和测试机制来验证生成代码质量的问题. 因此, 能否根据模型的不同下游任务, 设计其对应的代码解释器以进一步
                 提升效率和可靠性, 以及将测试、验证和修复三者的技术进行有机地融合, 是这些领域值得探索的关键问题.

                 6.4   软件缺陷自动修复
                    毫无疑问, 基于大模型的自动修复技术达到了历史上最优的修复效率和修复效果, 在生成补丁的可读性和可
                 靠性上都有优异的表现. 在        Xia 等人  [171] 的研究中发现, 仅使用  CodeX  模型便修复了绝大多数       QuixBugs 缺陷数据
                 集的漏洞. 然而, 真实世界的项目往往非常复杂, 在经过多轮迭代后新旧功能耦合在一起, 导致缺陷往往隐藏在代
                 码非常深的角落, 甚至需要同时修改多个文件中的多个函数才可以将其修复. 目前基于大模型的自动修复技术还
                 主要聚焦于单行或者单块代码修复, 距离在现实中的应用落地仍有遥远的距离. 而两者之间的鸿沟便是: 如何将复
                 杂程序的缺陷信息有效地提供给大模型, 让大模型在理解缺陷场景的条件下, 尝试生成正确的修复                                (或者修复建
                 议). 已有的很多工作在缺陷自动修复任务上还仅将大模型作为一种高效的随机补丁搜索器, 而并没有深入挖掘大
                 模型的智能. Xia 等人提出的       ChatRepair [57] 在这一方向上已经进行了有价值的探索, 他们使用           ChatGPT  的对话机
                 制迭代地生成补丁和测试, 然后为模型反馈补丁验证信息. 在这个过程中, 模型通过编译和测试结果隐含地学习到
                 了缺陷修复背景, 迭代地优化上一次的错误补丁以进行更高效的修复. 但是, 为模型提供编译信息和测试执行反馈
                 还是非常直接的方式, 是否有更加完整的机制为模型提供修复场景还有待研究人员进一步探索.

                 6.5   模型快速迭代的挑战与机遇
                    如同前文对这      4  个领域的分析, 大模型在其中起着至关重要的作用. 当下, 全世界都聚焦于大模型的研究, 模
                 型的训练和开发也日新月异, 其中          OpenAI 公司在       年推出  CodeX  代码大模型后, 经过     1  年  3  个月的时间便推
                 出了  ChatGPT  模型, 并开放给全社会使用. 在此之后仅过去           4  个月时间, 多模态大模型      GPT4  便已经上线. 在软件
                 缺陷自动修复领域, Xia 等人      [171] 于  2023 年发表的大型实证研究中使用的      code-davinci-002 已经被  OpenAI 废弃  [33] ,
                 在未来不久, 所有     CodeX  模型都将被   ChatGPT  或  GPT4  模型取代. 短时间来看, 闭源模型的快速迭代为下游任务
                 的实验验证和对其机制特性的进一步研究带来了挑战. 然而对于                     GUI 测试领域, GPT4-V   模型的开放显然为研究
                 者提供了新的研究方向和思路. 可以料想到, 在              GPT4-V  模型的帮助下, 基于大模型的        GUI 测试效果能显著超越
                 先前的技术. 此外, 对于测试用例自动生成领域, 其面对的主要挑战之一是                      ChatGPT  模型的上下文窗口十分有限.
   108   109   110   111   112   113   114   115   116   117   118