DiffTester:通过重复模式加速扩散大型语言模型的单元测试生成

发表
Yang LekangYang Lekang 提交
作者: Yang LekangLekang 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 公开获取。
查看 arXiv 页面查看 PDF

评论

Yang LekangYang Lekang
论文作者
论文提交者

软件开发高度依赖广泛的单元测试,这使得自动化单元测试生成 (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 公开获取。