[论文解读] LLM-Powered Test Case Generation for Detecting Bugs in Plausible Programs
该论文提出AID,一种新颖方法,将大语言模型(LLMs)与差分测试相结合,用于生成高精度测试用例,以检测看似正确但存在隐蔽错误的程序中的复杂错误。通过使用PUT引导的程序生成、基于生成器的输入生成以及优先考虑多样性的差分测试,AID在TrickyBugs和EvalPlus数据集上的精度最高提升2.65倍,召回率最高提升1.80倍,优于当前最先进方法。
Detecting tricky bugs in plausible programs, those that pass existing test suites yet still contain bugs, remains a significant challenge in software testing. To address this problem, we propose TrickCatcher, an LLM-powered approach to generating test cases for uncovering bugs in plausible programs. TrickCatcher operates in three stages: First, it uses an LLM to generate program variants based on the program under test (PUT) and its specification. Second, it employs an LLM to construct an input generator from the specification for producing test inputs. Finally, these inputs are executed on both the PUT and its program variants to detect inconsistencies in their outputs. We evaluate TrickCatcher on two datasets, TrickyBugs and EvalPlus, which include 366 human-written and 151 AI-generated plausible programs with tricky bugs. TrickCatcher achieves recall, precision, and F1 scores that are 1.80x, 2.65x, and 1.66x those of the state-of-the-art baselines, respectively. Code and data used are available at https://github.com/RinCloud/TrickCatcher.
研究动机与目标
- 解决在程序通过所有现有测试但可能隐藏缺陷的情况下,生成准确测试预言和输入以检测细微、难以发现的错误这一关键挑战。
- 克服直接基于LLM的测试生成因错误的测试预言和非法输入导致精度低(低至6.3%)的问题。
- 提升在现实场景中自动化测试生成的可靠性与有效性,这些场景中程序已被视为合理但可能潜藏缺陷。
- 开发一种实用且可扩展的方法,将LLMs与差分测试相结合,以提升测试用例质量与故障检测能力。
提出的方法
- 使用LLMs生成受程序待测对象(PUT)及其规格说明共同引导的程序变体,通过PUT感知的提示工程提升变体的正确性。
- 将直接基于LLM的测试输入生成替换为代码生成器生成——LLMs生成可执行脚本(如Python),以强制实施输入约束,确保输入的合法性和正确性。
- 通过向PUT及其变体输入生成的输入执行差分测试,将不一致结果标记为潜在错误。
- 在差分测试中优先考虑输入多样性,以最大化覆盖边界情况,并提高发现细微缺陷的可能性。
- 使用现有测试套件对生成的变体进行过滤,以在差分测试前剔除错误或损坏的变体。
- 采用组合采样策略以减少随机性,提升评估的可重现性。

实验结果
研究问题
- RQ1当直接提示生成的测试用例精度仅为6.3%时,基于LLM的测试生成能否在检测看似正确程序中的复杂错误时实现高精度?
- RQ2将LLM生成的程序变体与差分测试结合,在揭示细微功能缺陷方面效果如何?
- RQ3PUT引导的程序生成与基于生成器的输入生成在多大程度上提升了测试用例生成的可靠性与正确性?
- RQ4与随机或非多样化选择相比,优先考虑测试输入选择的多样性是否显著提升了故障检测能力?
- RQ5在真实世界复杂编程基准上,AID与Differential Prompting和TOGA等最先进方法相比性能如何?
主要发现
- 在TrickyBugs和EvalPlus数据集上,AID的召回率最高比最佳现有方法(Differential Prompting)高出1.80倍,精度最高高出2.65倍。
- AID的F1分数最高超出最先进水平1.66倍,表明其在检测复杂错误方面具有更优的整体性能。
- 消融研究证实,每个组件——PUT引导的生成、基于生成器的输入生成以及优先考虑多样性的测试——均对AID的性能有显著贡献。
- 通过可执行代码生成器生成受约束的输入,AID将非法测试输入的比例从直接LLM生成时的40.1%降低至接近零。
- 该方法实现了69.3%至85.1%之间的测试预言精度,使其适用于真实世界部署,而此前方法的精度低于1%。
- 复现包已公开发布,确保了可重现性,并支持未来在更广泛应用场景中的扩展。

更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。