遇见数据集

req2test

收藏
Hugging Face2026-07-26 更新2026-07-27 收录
官方服务:

资源简介:

Req2Test 是一个用于需求驱动单元测试生成的大规模、多语言数据集,专为从大型教师大语言模型(LLM)到小型(2B–4B)学生模型的知识蒸馏而构建。数据集包含 85,560 条记录,每条记录将一个详细的自然语言功能需求段落与八个对齐的代码工件配对:包括四种编程语言(PHP、Java、TypeScript、C#)及其对应测试框架(PHPUnit、JUnit、Jest、NUnit)中的接口声明和单元测试类。数据涵盖 177 个领域(128 个软件应用领域和 49 个算法/计算领域),共生成 684,480 个代码示例,其中 95.2% 的单元测试工件包含至少一个真实断言。数据集旨在用于监督微调小型语言模型,使其能够在测试驱动开发场景中,直接根据自然语言需求生成接口声明和单元测试,而无需访问现有源代码。数据生成完全在本地完成,使用了 Gemma 2 27B、Phi-3 Medium 14B 和 CodeGemma 7B 等开源模型。数据集仅包含英文后端功能需求,且未进行执行验证,有 3.6% 的测试记录不含真实断言。数据集以 CC BY 4.0 许可证分发,并受 Google Gemma 使用条款约束。

创建时间:
2026-07-20
原始信息汇总

数据集概述:Req2Test

Req2Test 是一个大规模、多语言的、面向需求驱动的单元测试生成数据集,旨在支持从大型教师语言模型到小型学生模型的知识蒸馏。

基本属性

  • 许可协议:CC BY 4.0
  • 语言:英语
  • 记录数量:85,560 条
  • 列数:9 列
  • 领域:177 个(128 个软件应用领域 + 49 个算法/计算领域)
  • 生成示例总数:684,480 个
  • 数据集大小DataSet.parquet 文件(单一训练集,约 366 MiB)
  • 任务类别:文本生成
  • 标签:代码、单元测试、软件工程、测试生成、知识蒸馏、合成数据、PHP、Java、TypeScript、C#
  • 配置:默认配置,包含一个训练集,数据文件路径为 DataSet.parquet

数据模式(Schema)

每条记录包含一个自然语言功能需求以及四种编程语言对应的接口声明和单元测试类,共 9 列:

列名 类型 描述
requirements string 详细描述的自然语言功能需求段落
interface_php string PHP 接口
unittest_php string PHPUnit 测试类
interface_java string Java 接口
unittest_java string JUnit 测试类
interface_js string TypeScript 接口
unittest_js string TypeScript/Jest 测试类
interface_csharp string C# 接口
unittest_csharp string NUnit 测试类

使用示例

使用 Hugging Face datasets 库加载: python from datasets import load_dataset ds = load_dataset("centertest/req2test", split="train") print(ds) print(ds[0]["requirements"]) print(ds[0]["unittest_php"])

数据集构建

由七步迭代分解流水线生成,完全在本地运行(单张 NVIDIA A40 GPU,约 5,184 GPU 小时),使用开源权重模型:

  • Gemma 2 27B:教师模型,生成需求、接口和单元测试。
  • Phi-3 Medium 14B:轻量模型,处理低复杂度项目。
  • CodeGemma 7B:跨语言翻译(PHP → Java, TypeScript, C#)。

所有生成过程中未向任何外部 API 发送源代码或数据。

数据质量

  • 包含断言的测试:95.2% 的单元测试工件包含至少一个真实断言。
  • 局限性:仅涵盖后端功能需求(无前端/集成问题);需求仅使用英语;无基于执行的验证,3.6% 的测试记录不含真实断言。

预期用途

监督微调小型语言模型,使其能够直接从自然语言需求生成接口声明和单元测试,模拟测试驱动开发场景,无需访问现有源代码。

发布说明(2026-07)

  • Parquet 文件已原地重新编码,以改善远程扫描兼容性。
  • 当前布局使用多个行组和 Parquet 页面索引,支持更好的随机访问读取。
  • 内容未变:85,560 行,9 列。

引用

如果使用 Req2Test,请引用随附论文和该数据集(数据集中心标识符:centertest/req2test,DOI: 10.57967/hf/9646)。

搜集汇总
数据集介绍
req2test 数据集图片
构建方式
Req2Test数据集通过一个七步迭代分解流水线构建而成,该流水线完全在本地部署的单张NVIDIA A40 GPU上运行,耗时约5,184 GPU小时。其构建过程依托于多个开放权重模型:Gemma 2 27B作为教师模型,负责生成需求、接口与单元测试;Phi-3 Medium 14B用于处理低复杂度条目;而CodeGemma 7B则执行跨语言翻译任务,将PHP代码转换为Java、TypeScript和C#版本。整个流程不依赖任何外部API,确保了数据的独立性与安全性。
特点
该数据集包含85,560条记录,每一条记录将自然语言的功能性需求与八个对齐的代码产物配对,覆盖PHP(PHPUnit)、Java(JUnit)、TypeScript(Jest)和C#(NUnit)四种编程语言及测试框架。95.2%的单元测试产物包含至少一个真实断言,数据分布于177个领域(128个软件应用领域与49个算法计算领域),总计生成684,480个样本。数据集以Parquet格式存储,优化了行组和页面索引,便于高效随机读取。
使用方法
用户可通过Hugging Face的datasets库便捷加载数据集,使用load_dataset("centertest/req2test", split="train")即可获取训练集。数据集中的每条记录包含需求文本及对应四种语言的接口与单元测试代码,适用于对小型语言模型(2B-4B参数规模)进行监督微调,使其能够直接从自然语言需求生成接口声明和单元测试,模拟测试驱动开发场景。需注意,数据集仅覆盖后端功能需求,且所有需求均为英文。
背景与挑战
背景概述
Req2Test是一个由Youness Nachid-Idrissi、Hajar El Janah、Said Najah和Khalid Zenkouar等研究人员于2026年创建的大规模多语言数据集,旨在推动需求驱动单元测试生成领域的发展。该数据集包含85,560条记录,覆盖PHP、Java、TypeScript和C#四种编程语言,每对自然语言功能需求与相应的接口声明和单元测试类相关联。其核心研究问题在于通过知识蒸馏技术,从大型教师模型(如Gemma 2 27B)向小型学生模型(2B–4B参数)迁移测试生成能力,从而在约8 GB显存环境下实现高效的单元测试自动生成。该数据集由177个领域(128个软件应用和49个算法计算领域)的684,480个生成样本构成,95.2%的测试制品包含真实断言,为软件工程中的测试自动化提供了规模化、结构化的训练资源。
当前挑战
Req2Test所解决的领域挑战在于,现有单元测试生成方法通常依赖于已有源代码,难以在测试驱动开发(TDD)场景中直接从自然语言需求生成测试用例,且大型模型的高计算需求限制了部署可行性。该数据集通过知识蒸馏使小型模型能够胜任此任务,显著降低了硬件门槛。在构建过程中,数据集面临的挑战包括:采用七步迭代分解流水线,完全依赖本地部署的A40 GPU(约5,184 GPU小时)运行开放权重模型,需协调Gemma 2 27B、Phi-3 Medium 14B和CodeGemma 7B三个模型的分工与输出一致性;跨语言翻译(PHP到Java、TypeScript、C#)需确保语法和语义的准确对齐;此外,3.6%的测试记录不含真实断言,表明在自动化生成中验证断言完整性仍是结构性与功能性平衡的难点,且数据集仅涵盖后端功能需求,限制了其在前端或集成测试中的直接适用性。
常用场景
经典使用场景
Req2Test数据集专为需求驱动的单元测试生成任务设计,其经典使用场景聚焦于从自然语言功能需求直接生成接口声明与单元测试代码。研究人员可将此数据集作为监督式微调的基石,训练小型语言模型(如2B至4B参数规模)在无需访问目标源代码的前提下,依据给定的需求描述自动产生对应的接口定义和测试类。该过程模拟了测试驱动开发中的核心环节,即从需求文本到测试代码的智能映射,为自动化软件测试提供了高质量的基准训练资源。
实际应用
在实际软件工程实践中,Req2Test可赋能持续集成与持续交付流程中的自动化质量保障。开发团队能够利用基于该数据集微调的小模型,在需求文档撰写完毕后即刻生成单元测试骨架,加速回归测试套件的创建。特别适用于微服务架构中大规模接口测试的自动化,或帮助缺乏测试经验的团队成员快速获得结构完整、断言丰富的测试代码。此外,该数据集的多语言特性(PHP、Java、TypeScript、C#)使其能够无缝融入异构技术栈的软件开发流水线,显著提升测试覆盖率与开发效率。
衍生相关工作
Req2Test的发布已催生一系列衍生研究工作:一方面,研究者基于其需求-测试对齐特性探索多语言代码生成模型的知识蒸馏策略,尝试更小的Transformer架构(如2B参数)在测试生成任务上的性能边界;另一方面,该数据集被用于评估不同编程范式下接口设计与测试协作的自动生成效果。此外,部分工作围绕其生成的合成数据展开数据增强方法研究,结合重排序与过滤技术提升测试断言质量,并延伸至跨语言测试迁移、需求规范化分析等前沿课题,形成了以需求为中心的全新测试生成研究脉络。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务