← 最新论文
💻 computer science

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

本文介绍了 SPARK,这是一个通过从持续集成知识库中检索并标注相似的历史故障模式来增强基于大语言模型的测试代码故障定位的框架,从而在不显著增加推理成本的情况下提高了在复杂测试用例中识别故障行的准确性。

原作者: Golnaz Gharachorlu, Mahsa Panahandeh, Lionel C. Briand, Ruifeng Gao, Ruiyuan Wan

发布于 2026-05-12
📖 1 分钟阅读☕ 轻松阅读

原作者: Golnaz Gharachorlu, Mahsa Panahandeh, Lionel C. Briand, Ruifeng Gao, Ruiyuan Wan

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

以下是用简单语言和日常类比对这篇论文的解读。

问题:“坏相机”之谜

想象你是一名软件工程师。你的团队构建了一台庞大而复杂的机器(软件)。为了确保它正常运行,你有一支检查员团队(测试脚本),他们每天对机器进行巡检,检查每一个按钮和杠杆。

有时,一名检查员会大喊:“出问题了!”然后机器就会停止。

通常,问题出在机器本身。但有时,问题实际上出在检查员身上。也许检查员把相机拿倒了,或者他们检查了错误的杠杆,又或者他们记错了数字。这被称为测试代码故障定位(TCFL)

找出检查员指令中哪一部分出错了,极其困难。

  • 黑盒:你无法查看机器(软件)内部发生了什么;你只能看到检查员的报告。
  • 噪声:错误信息往往很模糊,比如"404 错误”或“某处坏了”,而没有说明具体位置。
  • 规模:检查员的手册(测试脚本)可能有数千页长。在其中找到那一句错误的句子,就像大海捞针。

旧方法:独自询问天才

此前,研究人员尝试通过让一个非常聪明的 AI(大语言模型,或 LLM)阅读损坏的检查员手册和错误信息来解决这个问题。他们会说:“这是手册,这是错误信息。告诉我哪里出错了。”

论文指出,这就像让一位天才侦探在没有目击者也没有过往案件档案的情况下破案。AI 只能根据当前混乱的线索进行猜测。如果手册非常庞大,它经常猜错。

新方案:SPARK(“模式侦探”)

作者提出了一种名为SPARK的新框架。把 SPARK 想象成一名侦探,他不仅查看当前的犯罪现场,还拥有一个巨大的已解决案件图书馆

以下是 SPARK 的工作原理,分步说明:

1. 错误图书馆(检索)

每当检查员过去犯下错误时,团队会修复它,并确切记录下错误发生的位置。SPARK 将这些“故障模式”汇编成图书馆。

  • 类比:想象一名侦探,他的文件柜里装满了过去某人忘记拧紧螺栓的案例。当新案件出现时,侦探不会从头开始;他会抽出与当前问题最相似的那份档案。

2. 智能搜索(相似度)

当新的测试失败时,SPARK 会搜索其图书馆,寻找一个看起来非常相似的过往测试。

  • 类比:如果当前的错误是关于“正方形”形状计算错误,SPARK 会寻找过去关于“正方形”形状的错误,而不是关于“圆形”的错误。

3. 高亮标记(标注)

这是巧妙之处。SPARK 不会把整个过往案件档案(那会太长且令人困惑)交给 AI,而是提取过往案例中具体出错的那一行,并用它来高亮当前案例中相似的那一行。

  • 类比:想象你正在阅读一份冗长且令人困惑的操作手册。一位热心的朋友指着一句特定的话说道:“嘿,上周在类似的情况下,正是这句话出了问题。请特别关注这一行。”
  • SPARK 会在代码中添加一条小注释,就像一张便利贴:# !!! 高度疑似故障 !!!

4. AI 的最终猜测

现在,AI 阅读当前的手册。它看到了错误信息,但也看到了 SPARK 放置的“便利贴”。它知道:“好吧,AI 应该优先关注这些高亮行。”

为什么这更好

论文在三个真实的工业数据集(庞大的真实软件测试集合)上测试了这种方法。以下是他们的发现:

  • 更准确:SPARK 比旧方法更准确地找到了损坏的行。它将定位第一个错误行的能力提高了约 10–19%。
  • 发现多个错误:真实测试中往往不止一个错误。SPARK 更擅长找出所有错误,而不仅仅是最明显的那个。
  • 高效:你可能会认为查阅旧案例会拖慢速度。但由于 SPARK 只高亮几行,而不是将整本旧手册粘贴到 AI 的内存中,它的速度与旧方法一样快。它不会用过多的文本淹没 AI。

结论

论文声称,通过给 AI 提供一份相似过往错误的“作弊条”——具体而言是突出显示可疑行,而不是倾倒整个文件——软件工程师可以更快、更准确地修复损坏的测试脚本。

它将一场“猜谜游戏”转变为一场“模式识别游戏”,利用团队自身的错误历史来解决今天的问题。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →