论文

CBDL以约束束搜索和查找保障测试导入有效并避免重复循环

No More Import Errors: Constrained Decoding for Guaranteed Valid Imports in LLM-Generated Tests

模型推理应用与实践解码与生成控制编程

摘要

基于 LLM 的测试生成管道最常见的失败原因之一是导入错误。语法约束解码可以在 token 生成期间修改 LLM 最后一层的概率,以保证有效导入。然而,我们发现它可能导致退化解决方案,即重复的有效导入(连续重复导入)在生成测试之前耗尽 token 预算。我们提出了带有查找的约束束搜索解码(CBDL),这是一种新颖的方法,可以保证导入有效性,同时通过避免过早选定会导致重复导入的 token 来解决连续重复导入问题。由于它在解码阶段运行,CBDL 可以集成到现有的基于 LLM 的测试生成管道中。我们为 Python 和 Java 实现 CBDL,并在两个测试生成任务上对其进行评估,结果表明生成的测试具有 100% 有效的导入,优于静态(RAG 和 LIBRO)和动态(Agentic Repair)导入有效性方法,而这些方法留下了 45%、10% 和 43% 的导入错误未解决。 CBDL 平均将 14% 的初始导入错误转换为功能正确的测试,与无约束生成相比,整体测试正确性提高了 1-4 个百分点。即使导入有效性不能直接导致正确的测试,它也允许 Agentic 修复管道将修复预算分配给剩余错误,从而将 Python 的正确测试增加 2-7 个百分点,将 Java 的正确测试增加 1-6 个百分点。最后,我们展示了一个混合管道,其中配备 CBDL 的小型本地模型生成导入,而前沿 GPT-5.2 模型生成测试体,其性能比单独使用 GPT-5.2 生成两者的性能高出 1-3 个百分点。总体而言,CBDL 消除了基于 LLM 的测试生成的主要瓶颈:通过以较小的开销(每次测试 16-21 秒)保证导入有效性,它提高了测试的正确性并实现经济高效的混合生成。

CBDL以约束束搜索和查找保障测试导入有效并避免重复循环:论文配图
图4:束约束解码避免连续import堆叠的示例。它不贪婪地选定会导致连续import的导入补全,而是同时探索import与from两种补全;由于展开后的总体概率更高,最终选择from。