单元测试是验证软件功能并缓解回归风险的一项关键但繁琐的技术。 尽管经典的自动化方法能够有效探索程序结构,但它们通常缺乏生成真实输入与断言所需的语义信息。大型语言模型(LLM)利用数据驱动的代码语义与编程模式知识,弥补了这一局限。 为系统分析该领域的最新技术进展,我们对 2021 年 5 月至 2025 年 8 月间发表的 115 篇相关文献 进行了系统性文献综述。我们基于单元测试生成的生命周期提出了一个统一的分类法,将 LLM 视为 需要系统化工程约束的随机生成器。该框架从核心生成策略以及一系列增强技术两个方面对现有研究进行分析,这些增强技术涵盖从生成前的上下文强化到生成后的质量保证。 我们的分析显示,提示工程(prompt engineering)已成为主导的使用策略,占比达 89%,归因于其高度灵活性。我们发现,迭代验证与修复循环 已成为确保生成测试具有可靠可用性的标准机制,并在编译与执行通过率方面带来了显著提升。 然而,仍有关键挑战尚待解决,包括:生成测试的 缺乏有效的缺陷检测能力、以及 缺乏标准化评测基准。为推动该领域发展,我们提出了一条未来研究路线图,强调向 自治测试智能体 以及 LLM 与传统软件工程工具的混合系统 演进。该综述为研究者与实践者提供了关于如何将 LLM 的潜力转化为工业级测试解决方案的全面视角。 附加关键词:单元测试、自动化测试生成、大型语言模型
软件测试是保障软件质量和降低发布风险的一项基础工程实践 [98, 109, 128]。作为白盒测试的一种形式,单元测试关注验证系统中最小的、可独立测试的单元(如函数或类)的行为 [15]。精心设计的单元测试套件可以在开发早期检测逻辑错误及边界情况缺陷,随着软件演进防止回归 [159],并为测试驱动开发(TDD)等敏捷实践提供支持 [15]。然而,手工编写全面且高质量的单元测试被广泛认为是一项成本高、劳动密集的任务,据报道其耗时超过开发时间的 15% [31, 117]。 为应对这一挑战,自动化测试生成(ATG)在数十年来一直是软件工程领域的研究重点。该领域历史上主要由基于搜索的软件测试(SBST)[43, 44, 64, 90, 106, 136] 以及符号/协同执行技术 [26, 50, 132, 160] 所引领。这些技术已被证明在系统探索程序结构方面卓有成效。然而,这些传统方法主要以结构为驱动,通常缺乏语义理解能力 [13, 35, 43, 60, 94, 169]。由于无法理解代码语义,这些方法难以生成具有特定领域格式的输入、构造具有复杂内部状态的对象,或处理与外部依赖(如文件系统或网络 API)的交互 [45, 113]。因此,传统技术往往难以生成真实有效的测试用例。 大型语言模型(LLMs)为解决这一“语义鸿沟”提供了新方法。通过在大规模代码与自然语言语料上预训练,这些模型学习了编程语法、常见编程模式、API 使用方式以及领域特定知识 [25, 85]。这种数据驱动的基础使其能够应对传统方法难以处理的语义性挑战。它们能够生成具备领域语义的复杂输入 [59, 67],构造有效的测试前缀 [108, 170],并为外部依赖生成合理的 mock 实现 [54, 108, 116]。 LLM 的引入推动了单元测试生成研究的迅速增长,同时也带来了新挑战与方法多样化。已有综述虽然从更广泛的视角回顾了 LLM 在软件工程中的应用 [40, 166],或对该任务进行了初步分类 [165],但它们在很大程度上专注于对现有工作的梳理。本文认为,基于 LLM 的测试生成的发展,应建立在对经典软件工程(SE)原则的适配与增强之上,将 LLM 视为一种需要系统化约束的随机生成器。 通过对 115 篇文献的系统分析,本文提出了这一技术分类体系。我们的分析显示,研究社区已经快速地将经典 SE 技术与 LLM 整合起来。特别地,基于程序分析的上下文增强技术,以及围绕反馈循环的生成后修复技术,已成为提升 LLM 生成测试质量的标准实践。更进一步的研究开始构建自治测试智能体,并设计与传统工具深度集成的混合系统。然而,关键空白仍然存在:尽管测试可用性(即确保测试可编译、可执行)已获得改善,提高测试有效性(即其检测真实缺陷的能力)仍然是重大挑战。此外,缺乏标准化评测基准、对模型内在局限性理解不足、以及学术研究与工业实践之间的鸿沟,是阻碍领域进一步发展的三大障碍。 为构建清晰的分析框架,我们提出如下研究问题(RQs): * RQ1: 如何应用并演化使用 LLM 的核心策略(预训练、微调与提示工程),尤其是它们在单元测试生成中的表现? * RQ2: 经典软件工程技术如何用于增强基于 LLM 的单元测试生成,它们又如何结合形成一种系统化的生成过程管理方法? * RQ3: 当前最先进的基于 LLM 的单元测试生成面临哪些主要挑战?这些挑战为未来研究带来了哪些机会?
通过回答这些问题,本文不仅提供了对当前研究格局的结构化概览,也提出了一条明确的发展路线图。该路线图基于系统工程原则,旨在推动基于 LLM 的测试从学术探索迈向稳健的工业实践。 为系统展示我们的分析,论文后续结构如下:第 2 节为我们的论点奠定基础。通过回顾经典自动化单元测试生成原则,我们准确界定传统方法难以跨越的“语义鸿沟”,并阐明为何大型语言模型被视为解决这一难题的关键技术。第 3 节介绍系统性文献综述的方法。论文核心部分回答三个研究问题:第 4 节解析使用 LLM 的策略(RQ1);第 5 节构建增强和约束该生成引擎的软件工程技术生态(RQ2);第 6 节从更广视角讨论当前技术挑战并识别未来研究机会(RQ3)。随后,第 7 节讨论研究有效性威胁,第 8 节与相关工作对比。最后,第 9 节总结全文并重申我们关于该领域演进路径的核心见解。