Skip to main content
QUICK REVIEW

[论文解读] Large-scale, Independent and Comprehensive study of the power of LLMs for test case generation

Wendkûuni C. Ouédraogo, Kader Kaboré|arXiv (Cornell University)|Jun 28, 2024
Software Testing and Debugging Techniques被引用 4
一句话总结

这项大规模、独立的研究评估了四种指令微调的大语言模型(GPT-3.5 Turbo、GPT-4、Mistral 7B、Mixtral 8x7B)以及五种提示工程技巧在690个Java类上的单元测试生成效果。研究发现,思维链(chain-of-thought)和引导式思维树(guided tree-of-thought)提示方法显著提升了测试的正确性和缺陷检测能力,即使在代码覆盖率较低的情况下,其在检测真实缺陷方面也优于EvoSuite。

ABSTRACT

Unit testing is essential for software reliability, yet manual test creation is time-consuming and often neglected. Search-based software testing improves efficiency but produces tests with poor readability and maintainability, while LLMs show promise but lack comprehensive evaluation across reasoning-based prompting and real-world scenarios. This study presents the first large-scale empirical evaluation of LLM-generated unit tests at the full class level, analyzing four models (GPT-3.5, GPT-4, Mistral 7B, and Mixtral 8x7B) against EvoSuite across 216,300 test cases targeting Defects4J, SF110, and CMD. We evaluate five prompting techniques, ZSL, FSL, CoT, ToT, and GToT, assessing compilability, hallucination-driven failures, readability, coverage, and test smells. Reasoning-based prompting, particularly GToT, significantly enhances reliability and compilability, yet hallucination-driven failures remain persistent, with compilation failure rates reaching 86%. While LLM-generated tests are generally more readable than SBST outputs, recurring issues such as Magic Number Tests and Assertion Roulette hinder maintainability. These findings suggest that hybrid approaches combining LLM-based generation with automated validation and search-based refinement are necessary for production-ready results.

研究动机与目标

  • 研究先进指令微调大语言模型在生成高质量、可读性强且正确的Java类单元测试方面的有效性。
  • 评估不同提示工程技巧(尤其是思维链和思维树)对测试质量和缺陷检测的影响。
  • 从正确性、覆盖率、可理解性和真实缺陷检测角度,将大语言模型生成的测试与领先的基于搜索的测试生成工具EvoSuite进行比较。
  • 通过使用未见过的代码和严格的统计验证,解决数据泄露、模型多样性及评估方法论方面的担忧。
  • 为未来在软件测试领域中大语言模型的研究提供一个全面且可复现的基准。

提出的方法

  • 本研究使用了四种先进的指令微调大语言模型:GPT-3.5 Turbo、GPT-4、Mistral 7B 和 Mixtral 8x7B,因其在代码生成方面的出色表现而被选中。
  • 应用了五种提示工程策略:零样本提示、 few-shot 提示、思维链(CoT)提示、思维树(ToT)提示,以及一种新颖的引导式思维树(GToT)提示技术。
  • 在来自多样化开源数据集的690个Java类中生成了共计216,300个测试用例,以确保评估的广泛性和代表性。
  • 从四个维度对测试进行评估:编译正确性、可理解性(通过代码风格和命名)、代码覆盖率(使用JaCoCo测量)以及真实缺陷检测(通过人工注入的故障进行评估)。
  • 构建了一个包含690个已知存在缺陷的Java类的自定义数据集,以严格评估真实缺陷检测能力。
  • 通过每项实验重复30次的统计分析确保结果的可靠性,并通过公开发布实验成果实现完全可复现。

实验结果

研究问题

  • RQ1不同提示工程技巧(如CoT、ToT、GToT)相较于零样本或few-shot提示,在提升大语言模型生成的单元测试正确性和质量方面有多大程度的改善?
  • RQ2大语言模型生成的测试与EvoSuite生成的测试在代码覆盖率、测试正确性和可理解性方面有何差异?
  • RQ3大语言模型生成的测试能否有效检测Java类中的真实功能缺陷?其性能在不同模型和提示策略之间如何变化?
  • RQ4模型架构和指令微调对生成测试质量的影响如何,特别是在语法正确性和编码规范遵循方面?
  • RQ5大语言模型在生成未见过代码的相关测试时有多强的鲁棒性?其在已知数据集之外的泛化能力存在哪些局限?

主要发现

  • 与零样本和few-shot提示相比,思维链(CoT)和引导式思维树(GToT)提示技术显著提升了测试的正确性和缺陷检测能力。
  • 尽管代码覆盖率较低,GPT-3.5 Turbo 和 Mistral 7B 搭配 CoT 提示在相同测试套件中检测到的真实缺陷数量多于 EvoSuite。
  • EvoSuite 的代码覆盖率高于所有大语言模型,但其测试在检测实际功能缺陷方面不如 CoT 提示的大语言模型有效。
  • 大语言模型生成的测试更具可读性,且在风格上更接近人工编写的测试;而 EvoSuite 的测试常使用晦涩的变量名并包含过多断言。
  • 研究揭示了一个权衡:尽管大语言模型在缺陷检测和可读性方面表现出色,但在语法正确性和编译正确性方面仍存在挑战,表明仍有改进空间。
  • 结果对提示设计高度敏感,其中 GToT 表现最佳,表明在提示中引入结构化推理对高质量测试生成至关重要。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。