UniTSyn: A Large-Scale Dataset Capable of Enhancing the Prowess of Large Language Models for Program Testing
作者: Yifeng He, Jiabo Huang, Yuyang Rong, Yiwen Guo, Ethan Wang, Hao Chen
分类: cs.SE, cs.AI, cs.CL, cs.CR, cs.LG
发布日期: 2024-02-04
备注: 8 pages, 5 figures
💡 一句话要点
提出UniTSyn数据集以提升大型语言模型的单元测试生成能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大型语言模型 单元测试 数据集 代码生成 软件测试 机器学习 编程语言
📋 核心要点
- 现有代码大型语言模型在生成准确和完整的测试时表现不佳,主要由于训练数据未能区分测试代码与其他代码。
- 本文提出的UniTSyn数据集通过收集焦点测试对,帮助LLMs更好地推断被测函数的预期行为和逻辑路径。
- 实验结果显示,基于UniTSyn构建的自回归模型在所有评估的编程语言中均显著提高了生成准确性和代码覆盖率。
📝 摘要(中文)
大型语言模型(LLMs)在生成高质量代码方面表现出色,但在生成准确完整的测试方面存在不足,因为现有模型未能区分测试代码与其他代码。本文提出了一个大规模数据集UniTSyn,旨在增强LLMs在单元测试合成中的能力。通过利用语言服务器协议,UniTSyn成功收集了焦点测试对,而无需复杂的项目执行设置或脆弱的语言启发式。该数据集包含270万个焦点测试对,涵盖五种主流编程语言,实验结果表明,基于UniTSyn构建的自回归模型在学习和理解单元测试表示方面取得了显著提升,改善了生成的准确性和代码覆盖率。
🔬 方法详解
问题定义:本文旨在解决现有大型语言模型在生成单元测试时的不足,尤其是由于训练数据未能有效区分测试代码与其他代码,导致生成的测试准确性和完整性不足。
核心思路:论文提出的UniTSyn数据集通过聚焦于测试与被测函数的关联,帮助LLMs更好地理解预期行为和逻辑路径,从而提高测试生成的质量。
技术框架:UniTSyn的收集过程利用语言服务器协议,避免了复杂的项目执行设置和脆弱的语言特定启发式。数据集包含270万个焦点测试对,涵盖五种主流编程语言。
关键创新:UniTSyn的最大创新在于其大规模收集焦点测试对的能力,解决了以往方法在收集测试数据时的局限性,使得数据集更具可扩展性和实用性。
关键设计:在构建模型时,采用自回归结构,优化了损失函数以提高生成的准确性和代码覆盖率,具体的参数设置和网络结构细节将在后续公开的代码和数据中提供。
🖼️ 关键图片
📊 实验亮点
实验结果表明,基于UniTSyn构建的自回归模型在所有评估的编程语言中,生成准确性和代码覆盖率均显著提升,具体提升幅度未知,展示了该数据集在单元测试生成中的有效性。
🎯 应用场景
该研究的潜在应用领域包括软件测试自动化、代码质量保证和开发工具的智能化。UniTSyn数据集的发布将为研究人员和开发者提供丰富的资源,促进大型语言模型在软件测试领域的应用与发展,提升软件开发的效率和可靠性。
📄 摘要(原文)
The remarkable capability of large language models (LLMs) in generating high-quality code has drawn increasing attention in the software testing community. However, existing code LLMs often demonstrate unsatisfactory capabilities in generating accurate and complete tests since they were trained on code snippets collected without differentiating between code for testing purposes and other code. In this paper, we present a large-scale dataset UniTSyn, which is capable of enhancing the prowess of LLMs for Unit Test Synthesis. Associating tests with the tested functions is crucial for LLMs to infer the expected behavior and the logic paths to be verified. By leveraging Language Server Protocol, UniTSyn achieves the challenging goal of collecting focal-test pairs without per-project execution setups or per-language heuristics that tend to be fragile and difficult to scale. It contains 2.7 million focal-test pairs across five mainstream programming languages, making it possible to be utilized for enhancing the test generation ability of LLMs. The details of UniTSyn can be found in Table 1. Our experiments demonstrate that, by building an autoregressive model based on UniTSyn, we can achieve significant benefits in learning and understanding unit test representations, resulting in improved generation accuracy and code coverage across all evaluated programming languages. Code and data will be publicly available.