论文

通过基于 LLM 的重构人性化自动生成的单元测试套件

Humanizing Automatically Generated Unit Test Suites with LLM-Based Refactoring

摘要

基于搜索的测试生成工具(例如 EvoSuite)可大规模生成可编译且高覆盖率的单元测试,但它们的套件通常难以阅读和维护。 LLM 可以生成更自然的测试,但直接生成仍然很脆弱,在我们的研究中编译率仅为 51-78%。我们引入 TestHumanizer,这是一种混合 SBST+LLM 方法,它使用 LLM 作为可编译 SBST 套件上的受控重构层,以改进命名、结构和面向开发人员的清晰度,同时保留行为和编译有效性。我们在 Defects4J 和 SF110 的 350 个类上评估 TestHumanizer。 EvoSuite 每个类生成 15 个套件,每个套件都使用 gpt-4o 和 mistra-large-2407 在三种上下文配置下进行重构,产生 31,500 次重构。 TestHumanizer 达到 88-98% 的编译率,接近 EvoSuite 的 100% 基线,并且明显高于直接生成的 LLM。结构覆盖率在很大程度上得到保留,通常在 1-2 个百分点内,并且 86-95% 的重构满足复合忠实重构阈值。重构的套件还可以提高预测的可读性,减少控制流和认知复杂性,并减轻结构异味。基于摘要的设置提供了最稳健的权衡,而以代码为中心的长提示更容易出现幻觉引起的故障。对 30 个类别和 444 种测试方法的开发人员研究证实了感知可读性和采用意愿的显着提高,Wilcoxon p 小于 0.01,并且评估者之间存在显着的一致性。总体而言,LLM 最有效的不是作为独立生成器,而是作为稳健 SBST 输出上的验证门控细化层。