论文

基于 LLM 的测试代码故障定位通过检索知识进行相似模式标注

Similar Pattern Annotation via Retrieval Knowledge for LLM-Based Test Code Fault Localization

摘要

软件故障仍然是现代软件开发中的一个主要挑战,识别导致故障的代码元素是一项耗时的调试任务。虽然广泛的研究集中在被测系统 (SUT) 中的故障定位,但故障也可能源于有缺陷的系统测试脚本。这个问题被称为测试代码错误定位 (TCFL),尽管它在频繁执行大型测试套件的持续集成 (CI) 环境中很重要,但受到的关注却明显较少。 TCFL 特别具有挑战性,因为它通常在黑盒条件下运行,依赖于错误消息和部分日志等有限的诊断信号,并且涉及扩展故障定位搜索空间的大型系统级测试脚本。在本文中,我们提出了 SPARK,这是一个框架,它将持续集成 (CI) 环境中积累的调试知识集成到基于 大语言模型 (LLM) 的 TCFL 中。给定一个新观察到的失败测试用例,SPARK 从调试知识库中检索类似的故障标记测试用例,并根据失败测试的可疑行与之前观察到的故障模式的相似性有选择地注释它们。这些注释指导 LLM 的推理,同时保持可扩展性并避免天真的检索增强方法常见的提示长度爆炸。我们在三个工业数据集上评估 SPARK,其中包含来自不同软件产品的真实错误 Python 测试用例。结果表明,与现有的基于 LLM 的 TCFL 基线相比,SPARK 持续提高了故障定位有效性,同时保持了可比的推理成本和词元使用。特别是,该方法通过在包含多个故障的复杂测试用例中识别更正确的故障位置来推进现有技术的发展。