Automating Detection and Root-Cause Analysis of Flaky Tests in Quantum Software

本文提出了一种自动化管道,利用大语言模型(LLM)和余弦相似度技术,成功将量子软件中的易失性测试数据集扩展了 54%(新增 25 个案例),并验证了 Google Gemini 等模型在检测易失性测试及分析其根本原因方面的高精度表现。

Janakan Sivaloganathan, Ainaz Jamshidi, Andriy Miranskyy, Lei Zhang

发布于 Wed, 11 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文就像是在讲一个关于**“捉鬼”的故事,只不过这里的“鬼”不是真的幽灵,而是量子软件里一种让人头疼的“捣乱测试”**(Flaky Tests)。

为了让你更容易理解,我们可以把整个研究过程想象成**“量子软件医院的诊断与治愈计划”**。

1. 背景:什么是“捣乱测试”?

想象一下,你开了一家量子软件工厂。这里的机器(量子计算机)非常神奇,但也非常**“情绪化”“随性”**。

  • 经典软件(普通软件): 就像做面包。如果你按同样的配方(代码)做,每次烤出来的面包应该是一样的。如果面包烤糊了,那就是配方错了,改好配方下次就能成功。
  • 量子软件: 就像在狂风中抛硬币。即使你完全按同样的配方(代码)做,因为量子世界本质上是概率性的(就像风的方向在变),有时候硬币正面朝上,有时候反面朝上。

“捣乱测试”(Flaky Tests) 就是那些**“看心情”的测试员**。

  • 今天你运行测试,它说:“通过!没问题!”
  • 明天你运行完全一样的测试,它却说:“失败!出大问题了!”
  • 后天你又运行,它又说:“哦,刚才那是手滑,其实通过了。”

这种测试最讨厌的地方在于:代码根本没变,但它就是忽好忽坏。 这会让工程师抓狂,因为他们不知道到底是软件真的坏了,还是测试员在“闹脾气”。

2. 问题:以前的医生太累了

以前,要找出这些“捣乱测试”,工程师得像侦探一样,手动去翻几千个工单(Issue Reports)和代码修改记录(Pull Requests)。

  • 效率低: 就像在茫茫大海里捞针,靠人眼一个个看关键词(比如搜"flaky"这个词)。
  • 漏网之鱼多: 很多捣乱测试因为描述得不够清楚,或者用了不同的词,就被漏掉了。
  • 成本极高: 在真实的量子计算机上重跑测试,就像租用昂贵的私人飞机,跑一次就要花很多钱和时间。如果为了确认一个测试是不是“捣乱”而反复跑几十次,成本简直无法承受。

3. 解决方案:给医生装上“超级 AI 大脑”

这篇论文的作者们(来自多伦多和巴尔的摩的研究团队)决定:别让人肉搜了,我们用人工智能(大语言模型,LLM)来帮忙!

他们做了一套**“自动化诊断流水线”**,主要做了三件事:

第一步:扩充“病例库”(数据增强)

他们先有一个包含 46 个已知“捣乱测试”的小数据库。然后,他们利用一种叫**“向量相似度”的技术(可以想象成“找亲戚”**):

  • 把新发现的工单和代码,变成一种“数字指纹”。
  • 把这些指纹和已知的“捣乱测试”指纹做对比。
  • 如果两个指纹很像,哪怕它们没写过"flaky"这个词,系统也会怀疑:“嘿,这个可能也是个捣乱测试!”
  • 成果: 他们成功挖出了25 个以前没人发现的捣乱测试,把数据库扩大了54%

第二步:训练"AI 医生”(模型评估)

他们找来了市面上最厉害的几位"AI 医生”(比如 Google 的 Gemini, OpenAI 的 GPT, Meta 的 Llama 等),让它们学习如何判断:

  1. RQ3(诊断): 这个工单是不是“捣乱测试”?
  2. RQ4(结合案情): 如果不仅看工单,还看具体的代码片段,能不能更准?
  3. RQ5(找病因): 如果确认是捣乱测试,根本原因是什么?(是随机性?是网络问题?还是多线程打架?)

第三步:实战演练(结果)

经过测试,Google 的 Gemini 2.5 Flash 表现最棒,就像一位经验丰富的老专家

  • 准确率极高: 在识别捣乱测试时,准确率达到了 94% 以上。
  • 找病因准: 在分析原因时,准确率更是高达 96%
  • 结论: AI 不仅能帮你快速把“捣乱测试”从几千个工单里挑出来,还能告诉你:“这个测试之所以捣乱,是因为它用的随机数种子没固定住,就像抛硬币没定好规则一样。”

4. 核心发现:量子世界的“捣乱”很特别

通过研究,他们发现量子软件的“捣乱”和经典软件很不一样:

  • 经典软件: 捣乱通常是因为**“多线程打架”(几个人同时抢一个资源)或者“网络延迟”**。
  • 量子软件: 捣乱主要是因为**“随机性”**(Randomness)。
    • 比喻: 就像你让一个量子程序去生成一个随机数,如果每次生成的随机数种子不一样,测试结果就会变来变去。
    • 药方: 最常见的解决办法就是**“固定随机种子”**(Fix Seed),就像规定抛硬币必须用同一枚硬币、同一个力度,这样结果就稳定了。

5. 总结:这对我们意味着什么?

这篇论文就像是为量子软件行业开发了一套**“智能体检仪”**:

  1. 省钱省力: 不需要在昂贵的量子硬件上反复跑测试来确认问题,AI 看一眼代码和工单就能判断。
  2. 提高质量: 以前那些被忽略的“捣乱测试”现在能被自动抓出来,防止它们伪装成真正的 Bug,或者掩盖真正的缺陷。
  3. 未来可期: 虽然现在的 AI 还不能直接“修好”代码,但它已经能精准地告诉工程师:“这里有问题,原因是 X,建议修改 Y。”

一句话总结:
研究人员利用最先进的人工智能,教会了机器如何识别量子软件中那些“喜怒无常”的测试,不仅扩大了已知问题的数据库,还证明了 AI 能成为量子软件工程师最得力的**“捉鬼助手”**,让量子软件变得更可靠、更稳定。