Seed&Steer: 利用可编译前缀和分支信号引导大语言模型生成单元测试
软件工程
2025-07-24 v1
摘要
单元测试在软件开发生命周期中扮演着至关重要的角色。基于大语言模型(LLM)的方法的最新进展显著改进了自动化测试生成,引起了学术界和工业界的关注。我们从一个新的视角重新审视基于LLM的单元测试生成,将前缀生成和断言生成解耦。为了描述它们各自的挑战,我们定义了初始化复杂度(Initialization Complexity)并采用圈复杂度(Cyclomatic Complexity)来衡量前缀和断言生成的难度,揭示前者主要影响编译成功,而后者影响测试覆盖率。为了解决这些挑战,我们提出了Seed&Steer,一种结合传统单元测试技术与大语言模型能力的两步方法。Seed&Steer利用传统单元测试工具(例如EvoSuite)生成具有高编译成功率的方法调用,这些调用作为种子来引导LLM构建有效的测试上下文。然后,它引入分支线索来帮助LLM探索不同的执行路径(例如,正常、边界和异常情况)并生成高覆盖率的断言。我们在五个真实世界的Java项目上评估了Seed&Steer,并与最先进的基线进行了比较。结果表明,Seed&Steer将编译通过率提高了约7%,在两个LLM上成功编译了792个和887个先前失败的案例。它还在不同复杂度的焦点方法上实现了高达约73%的分支和行覆盖率,覆盖率提升范围从1.09倍到1.26倍。我们的代码、数据集和实验脚本将公开发布,以支持未来的研究和可重复性。
引用
@article{arxiv.2507.17271,
title = {Seed&Steer: Guiding Large Language Models with Compilable Prefix and Branch Signals for Unit Test Generation},
author = {Shuaiyu Zhou and Zhengran Zeng and Xiaoling Zhou and Rui Xie and Shikun Zhang and Wei Ye},
journal= {arXiv preprint arXiv:2507.17271},
year = {2025}
}