ProjectTest
收藏arXiv2025-02-11 更新2025-02-26 收录
下载链接:
http://arxiv.org/abs/2502.06556v2
下载链接
链接失效反馈官方服务:
资源简介:
ProjectTest是一个针对单元测试生成的项目级基准测试,由伊利诺伊大学芝加哥分校提出。该数据集包含Python、Java和JavaScript三种编程语言各20个中等规模、高质量的项目。数据集通过从GitHub上精心挑选符合特定标准的项目构建而成,每个项目包含2到15个文件,且代码行数少于1600行。ProjectTest旨在为项目级单元测试生成提供一个更大、质量更高的项目集,并对前沿大型语言模型在单元测试生成方面的错误进行了深入分析。
ProjectTest is a project-level benchmark for unit test generation, proposed by the University of Illinois Chicago. This dataset contains 20 medium-sized, high-quality projects for each of the three programming languages: Python, Java, and JavaScript. The dataset is constructed by carefully selecting projects that meet specific criteria from GitHub. Each project includes 2 to 15 files and has fewer than 1600 lines of code. ProjectTest aims to provide a larger, higher-quality project collection for project-level unit test generation, and has conducted in-depth analysis of the errors of cutting-edge large language models in unit test generation.
提供机构:
伊利诺伊大学芝加哥分校
创建时间:
2025-02-10
搜集汇总
数据集介绍

构建方式
ProjectTest数据集的构建方法是从GitHub上精选了具有合理规模、文件间依赖关系和可靠来源的项目,涵盖了Python、Java和JavaScript三种编程语言。每个语言构建了20个中等规模和高质量的项目。在数据集构建过程中,我们确保每个项目都包含多个文件,且文件之间具有依赖关系,每个项目的代码行数都少于1600行,以适应大多数代码语言模型的输入长度限制。此外,我们选择了社区认可度高、拥有较高星标和分叉数量的项目,以确保数据集的质量和可靠性。
特点
ProjectTest数据集的特点是它是一个项目级的单元测试生成基准,旨在评估大型语言模型(LLM)在单元测试生成方面的能力。与现有的评估基准不同,ProjectTest专注于更实用和更具挑战性的项目级代码库,而不是函数级或类级代码。数据集包含了三种编程语言的20个中等规模和高质量的项目,旨在提供一个更全面和更具挑战性的评估环境。此外,ProjectTest还提供了对前沿LLM的错误分析和自修复能力的评估,以揭示LLM在单元测试生成中的潜力和局限性。
使用方法
ProjectTest数据集的使用方法是通过评估LLM在单元测试生成方面的能力。数据集提供了三种编程语言的20个中等规模和高质量的项目,用于评估LLM的编译率、正确率和覆盖率。用户可以将LLM应用于这些项目,生成单元测试,并使用Pytest、Jacoco和JEST等测试框架进行评估。此外,用户还可以通过手动修复和LLM自修复机制来评估LLM的潜力和局限性。最后,用户可以参考数据集中的错误分析,以了解LLM在单元测试生成中可能出现的错误类型和原因,并针对性地改进LLM的性能。
背景与挑战
背景概述
在软件工程中,单元测试对于识别错误并确保代码的稳定性和可维护性起着至关重要的作用。然而,编写单元测试是一个耗时的过程,通常占软件开发时间的约15.8%。为了解决这个问题,自动化测试用例生成技术被提出,包括基于搜索、基于约束和基于随机的方法。尽管这些方法可以生成具有合理覆盖率的单元测试,但与手动编写的测试相比,它们的可读性和意义性通常较低,因此在实际场景中很少被采用。近年来,大型语言模型(LLMs)在代码生成方面展现出强大的能力,极大地加速了单元测试生成过程,并提高了可读性和泛化能力,几乎无需人工干预。为了评估LLMs在单元测试生成方面的能力,现有的评估基准主要关注函数级、类级或文件级代码,而忽略了更具实践性和挑战性的项目级代码库。为了填补这一空白,Wang等人提出了ProjectTest,这是一个针对单元测试生成的项目级基准,涵盖了Python、Java和JavaScript三种编程语言。ProjectTest包含每个语言20个中等规模和高质量的工程项目,旨在为项目级单元测试生成提供一个更大、更高质量的工程集,并进行彻底的错误分析。
当前挑战
ProjectTest基准的创建和评估面临着一系列挑战。首先,项目级代码库中的不同文件之间存在复杂的依赖关系,这使得单元测试生成变得更加困难。其次,尽管前沿LLMs在Python和Java上表现出中等性能,但在Java上由于语法更严格,仍然是最大的挑战。此外,LLMs生成的单元测试中存在显著的简单错误,包括编译错误和级联错误,这些错误阻碍了对LLMs在单元测试生成方面的更高级别性能的分析,例如正确性和覆盖率。为了解决这些问题,研究人员首先手动修复了LLMs的编译和级联错误,然后重新评估了修复后的单元测试。这不仅可以衡量模型的原始性能,还可以衡量它们在结合简单错误修复机制后的改进潜力。最后,LLMs的自我修复能力也得到了评估,尽管LLMs可以纠正它们生成的单元测试中的一些错误,但它们的自我修复能力仍然落后于人类修复的质量和可靠性。
常用场景
经典使用场景
ProjectTest 数据集作为单元测试生成的基准,旨在解决现有评估基准主要关注函数、类或文件级别代码的问题。该数据集涵盖了 Python、Java 和 JavaScript 三种编程语言,并包含 20 个中等规模和高品质的项目。ProjectTest 数据集的经典使用场景包括评估前沿语言模型(LLMs)在生成项目级别代码的单元测试方面的能力,并分析其生成的单元测试的编译率、正确率和覆盖率。此外,该数据集还用于研究手动错误修正和自我错误修正机制对 LLMs 生成单元测试的影响。
衍生相关工作
ProjectTest 数据集衍生了许多相关的经典工作,包括对 LLMs 在生成单元测试方面的能力评估、手动错误修正和自我错误修正机制的研究,以及对不同编程语言中常见错误类型的分析。这些工作为提高 LLMs 生成单元测试的质量提供了重要参考,并为后续研究提供了新的方向。
数据集最近研究
最新研究方向
ProjectTest数据集为单元测试生成领域带来了新的研究方向。该数据集专注于项目级别的代码库,而非传统的函数、类或文件级别,更贴近实际软件开发场景。研究结果表明,即使是前沿的大型语言模型(LLMs)在ProjectTest上的表现也相对中等,这突显了项目级别单元测试生成的难度。此外,即使是最先进的LLMs也容易出现编译和级联错误,这些错误虽然简单但会阻碍对LLMs性能的进一步分析。因此,研究者们开始探索通过手动修复和自我修复机制来提高LLMs生成单元测试的质量。这一方向的研究不仅有助于提高LLMs生成单元测试的准确性,也有助于提高LLMs在软件开发领域的实用性和可靠性。
相关研究论文
- 1ProjectTest: A Project-level LLM Unit Test Generation Benchmark and Impact of Error Fixing Mechanisms伊利诺伊大学芝加哥分校 · 2025年
以上内容由遇见数据集搜集并总结生成



