⏶1
DiffTester:通过重复模式加速扩散大型语言模型的单元测试生成
发表
由
Yang Lekang 提交

作者:
Lekang Yang, Yuetong Liu, Yitong Zhang, Jia Li

摘要
AI 生成总结
DiffTester 是一个用于扩散 LLM 在单元测试生成中的加速框架,通过识别和利用常见的结构模式来提高效率而不牺牲测试质量。软件开发高度依赖广泛的单元测试,这使得自动化单元测试生成(UTG)的效率尤为重要。然而,大多数现有的LLM在每次前向传播中逐个 token 生成测试用例,这导致UTG效率低下。最近,扩散LLM(dLLM)应运而生,它们提供了有前景的并行生成能力,并在高效UTG方面显示出强大的潜力。尽管有此优势,但它们在UTG上的应用仍然受到效率和测试质量之间明显权衡的限制,因为增加每一步生成的 token 数量常常会导致测试用例质量急剧下降。为了克服这一限制,我们提出了DiffTester,一个专门为dLLM在UTG中量身定制的加速框架。DiffTester的核心思想是,针对同一焦点方法的单元测试通常共享重复的结构模式。通过在生成过程中通过抽象语法树分析动态识别这些常见模式,DiffTester可以在不损害输出质量的情况下自适应地增加每一步生成的 token 数量。为了实现全面的评估,我们扩展了最初仅限于Python的TestEval基准,引入了包括Java和C++在内的其他编程语言。在两个代表性模型上的三个基准上的广泛实验表明,DiffTester在保持测试覆盖率的同时实现了显著的加速。此外,DiffTester在不同的dLLM和编程语言之间具有良好的泛化能力,为软件开发中高效的UTG提供了一个实用且可扩展的解决方案。代码和数据可在https://github.com/wellbeingyang/DLM4UTG-open 公开获取。
软件开发高度依赖广泛的单元测试,这使得自动化单元测试生成 (UTG) 的效率尤为重要。然而,大多数现有的 LLM 在每次前向传播中一次生成一个 token,这导致 UTG 效率低下。最近,扩散 LLM (dLLM) 出现了,它们提供了有希望的并行生成能力,并在高效 UTG 方面显示出强大的潜力。尽管有这个优势,它们在 UTG 上的应用仍然受到效率和测试质量之间明显权衡的制约,因为在每个步骤中增加生成的 token 数量通常会导致测试用例质量急剧下降。为了克服这一限制,我们提出了 DiffTester,一个专门为 dLLM 在 UTG 中的应用而设计的加速框架。DiffTester 的核心思想是,针对同一焦点方法的单元测试通常共享重复的结构模式。通过在生成过程中通过抽象语法树分析动态识别这些共同模式,DiffTester 在不牺牲输出质量的情况下,自适应地增加了每个步骤产生的 token 数量。为了实现全面的评估,我们扩展了最初仅限于 Python 的 TestEval 基准,引入了包括 Java 和 C++ 在内的其他编程语言。在两个代表性模型的三种基准上的广泛实验表明,DiffTester 在保持测试覆盖率的同时实现了显著的加速。此外,DiffTester 在不同的 dLLM 和编程语言之间具有良好的泛化性,为软件开发中的高效 UTG 提供了一个实用且可扩展的解决方案。代码和数据可在 https://github.com/wellbeingyang/DLM4UTG-open 公开获取。