Evaluating Large Language Models for the Generation of Unit Tests with Equivalence Partitions and Boundary Values

📄 arXiv: 2505.09830v1 📥 PDF

作者: Martín Rodríguez, Gustavo Rossi, Alejandro Fernandez

分类: cs.SE, cs.AI

发布日期: 2025-05-14

备注: Under revision at Jornadas de Cloud Computing, Big Data & Emerging Topics (JCC-BD&ET) - 2025


💡 一句话要点

利用大语言模型生成单元测试,关注等价划分和边界值分析

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大语言模型 单元测试生成 等价划分 边界值分析 自动化测试 代码生成 提示工程

📋 核心要点

  1. 单元测试的设计和实现复杂且容易被忽视,现有方法难以高效生成高质量的测试用例。
  2. 通过优化提示,将代码和需求融入LLM,使其能够覆盖等价划分和边界值等关键测试场景。
  3. 通过定量和定性分析,对比LLM与人工测试的优劣,强调人工监督在LLM测试生成中的重要性。

📝 摘要(中文)

本研究评估了大语言模型(LLM)在自动生成单元测试用例方面的潜力,并将其与手动测试进行了比较。研究开发了一种优化的提示,该提示集成了代码和需求,覆盖了诸如等价划分和边界值等关键情况。通过定量指标和手动定性分析,比较了LLM与训练有素的程序员的优势和劣势。结果表明,LLM的有效性取决于精心设计的提示、强大的实现和精确的需求。尽管LLM具有灵活性和前景,但仍需要人工监督。这项工作强调了手动定性分析作为单元测试评估中自动化重要补充的重要性。

🔬 方法详解

问题定义:论文旨在解决程序员在编写单元测试时面临的效率和质量问题。现有的手动编写测试用例方法耗时且容易出错,难以覆盖所有可能的边界情况和等价类划分,导致测试不充分。因此,如何利用LLM自动生成高质量的单元测试用例,成为一个重要的研究问题。

核心思路:论文的核心思路是利用大语言模型(LLM)的代码生成能力,通过精心设计的提示(prompt),引导LLM理解代码的功能和需求,并生成相应的单元测试用例。重点关注等价划分和边界值分析,确保生成的测试用例能够覆盖各种关键场景。

技术框架:该研究的技术框架主要包括以下几个步骤:1) 设计优化的提示(prompt),该提示包含代码和需求信息;2) 使用LLM根据提示生成单元测试用例;3) 使用定量指标(如代码覆盖率)和手动定性分析评估生成的测试用例的质量;4) 对比LLM生成的测试用例与人工编写的测试用例的优劣。

关键创新:该研究的关键创新在于:1) 提出了一个优化的提示设计方法,能够有效地引导LLM生成高质量的单元测试用例;2) 强调了等价划分和边界值分析在单元测试生成中的重要性,并将其融入到提示设计中;3) 结合定量指标和手动定性分析,全面评估了LLM在单元测试生成方面的能力。

关键设计:提示的设计是关键。提示需要包含清晰的代码信息、明确的需求描述,以及对等价划分和边界值的指导。例如,提示可以明确指出需要测试的函数的输入范围、边界条件,以及不同输入值对应的预期输出。此外,研究可能还探索了不同的提示模板和参数设置,以优化LLM的生成效果。损失函数和网络结构方面,由于是直接利用LLM的预训练能力,因此没有涉及自定义的损失函数或网络结构设计。

🖼️ 关键图片

fig_0

📊 实验亮点

研究结果表明,LLM在生成单元测试用例方面具有一定的潜力,但其有效性取决于提示的设计、实现的鲁棒性和需求的精确性。通过精心设计的提示,LLM可以生成覆盖等价划分和边界值的测试用例。然而,LLM仍然需要人工监督,以确保生成的测试用例的质量和完整性。手动定性分析是评估LLM生成测试用例的重要补充。

🎯 应用场景

该研究成果可应用于软件开发过程的自动化测试环节,提高单元测试的效率和质量,降低软件缺陷率。通过自动生成测试用例,可以减轻程序员的测试负担,使其能够更专注于代码的开发和优化。此外,该方法还可以用于教育领域,帮助学生更好地理解单元测试的概念和方法。

📄 摘要(原文)

The design and implementation of unit tests is a complex task many programmers neglect. This research evaluates the potential of Large Language Models (LLMs) in automatically generating test cases, comparing them with manual tests. An optimized prompt was developed, that integrates code and requirements, covering critical cases such as equivalence partitions and boundary values. The strengths and weaknesses of LLMs versus trained programmers were compared through quantitative metrics and manual qualitative analysis. The results show that the effectiveness of LLMs depends on well-designed prompts, robust implementation, and precise requirements. Although flexible and promising, LLMs still require human supervision. This work highlights the importance of manual qualitative analysis as an essential complement to automation in unit test evaluation.