Page 88 - 《软件学报》2025年第4期
P. 88
1494 软件学报 2025 年第 36 卷第 4 期
言模型. CodeX 可以理解和生成代码, 处理多种编程语言, 并且适用于各种类型的编程任务, 包括代码补全、代码
生成以及代码的错误修复等. CodeX 模型强大的能力引起了研究人员的注意, 已有大量的工作研究如何将 CodeX
模型应用在软工下游任务上. 在深度学习库的测试输入数据生成中, CodeX 被用于生成种子程序 [50] . 在软件修复
中, CodeX 在 Defects4J、QuixBugs 等数据集上均表现优异 [51,52] . GitHub 还发布了基于 CodeX 的 GitHub Copilot,
它可以在编程时预测接下来要输入的完整代码片段, 并提供自然语言的描述 [53,54] .
必要. 然而, 构建大语言模型的基础设施, 如深度学习框架
模型 微调后模型
模型
(a) 微调 (b) 提示
图 4 模型应用于下游任务的方式
2022 年 11 月, OpenAI 公司推出了 ChatGPT [40] , 一种基于生成预训练 Transformer 架构的大型语言模型. 开发
人员在初期采取了监督学习的方式训练和调整模型, 随后则引入了一种以人类反馈为基础的强化学习方法
(reinforcement learning with human feedback, RLHF) [55] 对模型进行进一步的更新和提升. ChatGPT 凭借其在处理各
类任务上的卓越表现, 赢得了广泛的关注和肯定, 研究人员已经开始研究并挖掘 ChatGPT 在软件工程领域中的应
用潜力, 如程序修复 [56,57] , 代码生成等任务. 在 2023 年 3 月, OpenAI 进一步推出最新的 GPT-4 模型, 该模型达到了
目前最强的综合性能, 并支持多模态输入, 这使其在处理复杂任务以及模拟人类输入上具有相当的潜力, 比如
GUI 截图用于自动化测试 [58] .
2 深度学习库的缺陷检测技术
如第 1 节所述, 深度学习模型由于其强大的能力, 目前已经被广泛应用于现实生活的不同场景中, 承担着重要
的作用, 例如人脸识别 [59] 、飞机碰撞警告系统 [60] 、阿尔茨海默病诊断 [61] 、自动驾驶汽车 [62] 等. 与传统软件系统相
比, 构建模型基于的深度学习系统通常涉及更复杂的组件, 例如平台/硬件基础设施、深度学习库、模型、训练源
程序以及训练和测试语料库, 使得深度学习系统的潜在漏洞难以被发现并且可能导致灾难性的后果. 例如, Uber
的自动驾驶车辆深度学习系统中的一个软件错误导致了一名行人的死亡 [63] , 特斯拉驾驶员在自主驾驶模式下遭
遇车祸 [64] . 出于对人身财产安全的考虑, 开发人员对深度学习库系统进行充分的测试进而保障其可靠性变得非常
PyTorch 和 TensorFlow, 由于其复杂的架构和输入输出
特征, 难以被传统软件工程的常规方法, 例如随机变异、约束求解等技术深入有效地测试. 为此, 本节首先简要介
绍深度学习库测试技术的相关概念, 然后介绍不同技术的代表工作和其特性, 以及这些工作如何解决深度学习库
测试的关键挑战. 在此基础上, 我们分析大模型的机制特性, 并介绍最新技术如何将其结合到深度学习库的测试任
务中.
2.1 深度学习库相关概念简介
在本节中, 我们将以 PyTorch 为例对深度学习库测试技术的概念进行简要介绍. 如图 5 所示, 左侧为深度学习