five

UniTSyn

收藏
arXiv2024-02-05 更新2024-08-06 收录
下载链接:
http://arxiv.org/abs/2402.03396v1
下载链接
链接失效反馈
官方服务:
资源简介:
UniTSyn是一个由腾讯安全大数据实验室创建的大规模数据集,旨在提升大型语言模型在单元测试合成方面的能力。该数据集包含270万个焦点-测试对,覆盖Python、Java、Go、C++和JavaScript五种主流编程语言。创建过程中,利用了语言服务器协议(LSP)来实现焦点-测试对的收集,无需依赖特定项目的执行设置或语言特定的启发式方法。UniTSyn的应用领域主要集中在软件工程中,通过提供高质量的测试数据,帮助改进代码生成模型的准确性和代码覆盖率,从而提高软件测试的效率和质量。

UniTSyn is a large-scale dataset created by Tencent Security Big Data Lab, aiming to enhance the capability of large language models (LLMs) in unit test synthesis. This dataset contains 2.7 million focus-test pairs, covering five mainstream programming languages: Python, Java, Go, C++, and JavaScript. During its construction, the Language Server Protocol (LSP) was utilized to collect focus-test pairs without relying on specific project execution configurations or language-specific heuristic methods. The application scope of UniTSyn mainly focuses on software engineering: by providing high-quality test data, it helps improve the accuracy and code coverage of code generation models, thereby enhancing the efficiency and quality of software testing.
提供机构:
腾讯安全大数据实验室
创建时间:
2024-02-05
搜集汇总
数据集介绍
main_image_url
构建方式
UniTSyn 数据集的构建方式独具匠心,旨在提升大型语言模型(LLMs)在程序测试方面的能力。该数据集通过整合语言服务器协议(LSP)来实现对测试用例与被测试函数的精准匹配,从而避免了传统数据集中测试用例与代码之间缺乏直接关联的问题。UniTSyn 收集了 2.7 百万个测试用例与被测试函数的配对数据,覆盖了 Python、Java、Go、C++ 和 JavaScript 五种主流编程语言。数据集的构建流程如下:首先,通过 GitHub API 下载活跃的开源项目;其次,使用静态分析工具从项目中提取单元测试;然后,对测试用例进行静态分析,以识别对被测试函数的调用;最后,通过 LSP 向语言服务器发送请求,获取被测试函数的定义位置,从而实现对测试用例与被测试函数的精准匹配。
特点
UniTSyn 数据集具有以下几个显著特点:首先,数据规模庞大,包含了 2.7 百万个测试用例与被测试函数的配对数据,为 LLMs 的训练提供了丰富的数据基础;其次,数据覆盖面广,涵盖了 Python、Java、Go、C++ 和 JavaScript 五种主流编程语言,能够有效提升 LLMs 的通用性;再次,数据质量高,通过静态分析和 LSP 的结合,实现了对测试用例与被测试函数的精准匹配,为 LLMs 的理解和推理提供了可靠的数据支持。
使用方法
UniTSyn 数据集的使用方法如下:首先,研究人员可以使用该数据集来训练 LLMs,以提升其在程序测试方面的能力。训练过程中,可以将测试用例与被测试函数的配对数据作为训练数据,通过构建自回归模型等方式进行训练。其次,研究人员可以使用 UniTSyn 数据集来评估 LLMs 在程序测试方面的性能。评估过程中,可以将 LLMs 生成的测试用例与数据集中的测试用例进行对比,以评估 LLMs 的准确性和完整性。最后,UniTSyn 数据集还可以作为研究工具,用于探索 LLMs 在程序测试方面的潜在应用和改进方向。
背景与挑战
背景概述
在软件测试领域,单元测试是确保软件质量的关键环节。然而,传统的单元测试过程往往耗时且费力。近年来,大型语言模型(LLMs)在生成高质量代码方面展现出卓越的能力,吸引了软件测试社区的广泛关注。现有的代码LLMs在生成准确和完整的测试方面往往表现不佳,因为它们是在没有区分测试代码和其他代码的情况下收集的代码片段上进行训练的。为了解决这一问题,本文介绍了一个名为UniTSyn的大型数据集,它能够增强LLMs在单元测试合成方面的能力。UniTSyn通过将测试与被测试函数相关联,使LLMs能够推断出预期的行为和逻辑路径,从而生成更准确和完整的测试。UniTSyn包含270万个测试对,跨越五种主流编程语言,使其能够用于增强LLMs的测试生成能力。
当前挑战
UniTSyn数据集在构建过程中面临一些挑战。首先,由于现实世界中的项目没有遵循一致的结构,因此自动化收集测试对和焦点函数对是一项具有挑战性的任务。现有的工作要么依赖于动态分析或启发式方法来定位焦点函数,要么在文件级别找到测试和焦点函数之间的粗粒度对应关系。这些方法都有其局限性,例如难以跨编程语言扩展或导致模型无法正确理解预期的行为和逻辑路径。其次,从依赖图中提取精确的焦点函数定义是一项劳动密集型的工作,并且每种语言都有其独特之处。为了克服这些挑战,UniTSyn采用了语言服务器协议(LSP)来实现跨语言的依赖分析,并设计了一个灵活的静态分析器来从单元测试中识别对焦点函数的调用。这些设计不仅减少了跨不同编程语言进行调用的难度,还消除了为每种语言实现多个依赖分析或设置多个执行环境的需求。
常用场景
经典使用场景
UniTSyn 数据集主要用于增强大型语言模型 (LLM) 在程序测试方面的能力。通过将测试与被测试函数关联起来,LLM 可以推断出预期的行为和待验证的逻辑路径。UniTSyn 数据集包含了 2.7 百万个焦点-测试对,跨越五种主流编程语言,使其能够用于增强 LLM 的测试生成能力。该数据集通过基于 UniTSyn 构建自回归模型,在学习和理解单元测试表示方面取得了显著成果,从而提高了所有评估编程语言的生成准确性和代码覆盖率。
解决学术问题
UniTSyn 数据集解决了现有代码 LLM 在生成准确和完整测试方面的不足。现有代码 LLM 往往在生成测试方面表现不佳,因为它们是在没有区分测试目的代码和其他代码的情况下收集代码片段进行训练的。UniTSyn 数据集通过收集焦点-测试对,使得 LLM 能够更好地理解和学习单元测试表示,从而提高了生成测试的准确性和代码覆盖率。该数据集为软件工程领域提供了一个新的研究方向,有助于推动 LLM 在软件测试方面的应用。
衍生相关工作
UniTSyn 数据集衍生了多个相关经典工作,包括:1) UniTester,一个基于 UniTSyn 训练的测试生成模型,在准确性和完整性方面取得了显著成果;2) 多语言测试生成模型,利用 UniTSyn 数据集进行训练,能够生成多种编程语言的测试代码;3) 基于焦点-测试对的语言模型,利用 UniTSyn 数据集进行训练,能够更好地理解和学习单元测试表示。这些经典工作进一步推动了 LLM 在软件测试方面的应用,为软件开发人员提供了更高效的测试生成工具。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作