SeedSteer: Guiding Large Language Models with Compilable Prefix and Branch Signals for Unit Test...
2026/10/14 7:09:02
网站建设
项目流程
文章主要内容和创新点
主要内容
本文聚焦于基于大型语言模型(LLM)的单元测试生成,提出了一种名为Seed&Steer的两阶段方法,旨在解决LLM生成单元测试时面临的编译成功率低和测试覆盖率不足的问题。
- 问题分析:将单元测试生成拆解为前缀生成(构建测试环境)和断言生成(验证方法正确性),并定义“初始化复杂度”(影响编译成功)和“环路复杂度”(影响覆盖率)以量化两者的挑战。
- 方法设计:
- Seed阶段:利用传统单元测试工具(如EvoSuite)生成高编译成功率的方法调用作为“种子”,引导LLM构建可编译的测试前缀,提升编译成功率。
- Steer阶段:提取目标方法的条件分支信号,生成分支意图,结合函数意图引导LLM探索多样执行路径(正常、边界、异常情况),生成高覆盖率的断言。
- 实验验证:在5个真实Java项目上与现有方法对比,结果显示Seed&Steer将编译成功率提升约7%,修复了两个LLM上792和887个失败案例;分支和行覆盖率最高达73%,相对提升1.09×至1.26×。
创新点
- 视角创新:首次将LLM-based单元测试生成拆解为前缀生成和断言生成,揭示前者主要影响编译成功、后者主要影响覆盖率的规律。