中文

统一与制胜:基于 LLM 的多语言、多样化且自洽的单元测试生成

软件工程 2025-03-21 v1 人工智能

摘要

基于大语言模型(LLM)的测试生成在软件工程中备受关注,然而大多数研究评估的是 LLM 针对给定语言在单次尝试中生成单元测试的能力,错失了利用 LLM 多样性以实现更稳健测试的机会。本文提出了 PolyTest,一种通过利用多语言和温度控制的多样性来增强测试生成的新方法。PolyTest 以两种互补的方式系统地利用了这些特性:(1)跨语言测试生成,在零温度下生成多种语言的测试并进行统一;(2)多样化测试采样,在较高温度下在同一语言内生成多个测试集,然后再进行统一。一个关键洞察是,LLM 在不同语言和生成过程中能够生成多样但相互矛盾的测试——相同的输入,不同的预期输出。PolyTest 通过统一测试集来缓解不一致性,促进自洽性并提高整体测试质量。与单语言或单次尝试方法不同,PolyTest 无需即时执行即可增强测试,这使其对性能较弱的语言尤为有益。我们使用 EvalPlus 在 Llama3-70B、GPT-4o 和 GPT-3.5 上评估了 PolyTest,在温度 0 下生成五种语言(Java、C、Python、JavaScript 以及基于 CSV 的格式)的测试,并在温度 1 下采样多个测试集。我们观察到,LLM 在不同设置下频繁生成相互矛盾的测试,而 PolyTest 在所有考虑的指标上显著提高了测试质量——测试数量、通过率、语句/分支覆盖率(高达 +9.01%)以及变异得分(高达 +11.23%)。最后,PolyTest 在测试生成、通过率和变异得分上均优于 Pynguin。

关键词

引用

@article{arxiv.2503.16144,
  title  = {Unify and Triumph: Polyglot, Diverse, and Self-Consistent Generation of Unit Tests with LLMs},
  author = {Djamel Eddine Khelladi and Charly Reux and Mathieu Acher},
  journal= {arXiv preprint arXiv:2503.16144},
  year   = {2025}
}