← 最新论文
💻 computer science

E-Test: E'er-Improving Test Suites

本文介绍了 E-Test,一种利用大语言模型从生产数据中识别未测试执行场景并自动生成新测试用例的方法,该方法在提升测试套件覆盖率和可靠性方面显著优于现有最先进的方法。

原作者: Ketai Qiu, Luca Di Grazia, Leonardo Mariani, Mauro Pezzè

发布于 2026-01-27
📖 1 分钟阅读☕ 轻松阅读

原作者: Ketai Qiu, Luca Di Grazia, Leonardo Mariani, Mauro Pezzè

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

想象一下你拥有一台庞大且复杂的机器,比如一台可以冲泡成千上万种不同饮品的尖端咖啡机。为了确保它能正常工作,你会编写一份指令清单(即测试套件)来检查它是否能处理基本任务:“制作黑咖啡”、“制作拿铁”、“制作卡布奇诺”。

但问题在于:你的清单永远是不完美的。 无论你多么优秀,你也无法想到用户可能尝试的所有奇奇怪怪的组合。也许有人尝试用一种你从未测试过的特定稀有豆子来制作拿铁,或者有人以一种奇怪的顺序按下按钮。如果机器因为这些原因而故障,你只有在真正的客户投诉时才会发现。

这就是 E-Test 论文试图解决的问题。

核心理念:“永恒进化”的清单

作者提出了一种全新的思考测试的方式。他们不想仅仅编写一个静态的清单并寄希望于此,而是想要一个能够通过观察现实世界中人们的实际行为而自动变得更聪明的清单。

他们称之为 “E'er-Improving Test Suites”(“E'er-Improving 测试套件”)。(把 “E'er” 理解为 “Ever” 的古英语表达方式,意为“永远”,意味着它会永远变得更好)。

E-Test 是如何工作的:聪明的图书管理员

想象一下,你有一个巨大的图书馆,里面存放着关于你的咖啡机是如何被使用的各种“假设情况”的故事。有些故事很枯燥(机器完全按照预期运行)。有些是全新的、有趣的(机器尝试了它从未见过的东西)。有些则是灾难性的(机器坏了)。

E-Test 就像是一个超级聪明的图书管理员,他可以在不实际运行机器的情况下阅读这些故事。其过程如下:

  1. 观察者(生产数据): 系统观察现实世界中真实的咖啡机。它收集每一杯饮品的制作过程、每一次按键操作以及每一个发生的错误。
  2. 图书管理员(AI): 这是见证奇迹的地方。系统使用了一个大语言模型(LLM)——这是一个非常先进的 AI,它阅读过数百万份代码手册、缺陷报告和测试指令。
    • AI 查看一个新的故事(一个“场景”)。
    • 它将这个故事与现有的清单(测试套件)进行对比。
    • 它会像侦探一样问自己五个关键问题:
      • “我们以前见过这个完全相同的故事吗?”
      • “这个故事是否展示了机器正在做一些新的事情?”
      • “机器的表现是否显得异常?”
      • “结果看起来正确吗?”
      • “这个故事是否可能揭示一个隐藏的漏洞(Bug)?”
  3. 分类: 根据问题的答案,AI 将故事分入三个堆栈中:
    • 已测试: “我们以前见过这个。很枯燥。忽略它。”
    • 需测试: “我们还没见过这种完全相同的组合,而且它运行良好。我们应该把它加入我们的清单,以免忘记。”
    • 易错项: “这是一场灾难!机器在执行此操作时坏了。我们需要修复机器,并添加一个测试,以确保它不再以这种方式出错。”
  4. 构建者: 对于“需测试”和“易错项”这两堆内容,AI 会自动编写新的、正式的指令(测试用例)来添加到你的清单中。

为什么这很重要

通常,寻找这些“隐藏”的场景就像是在大海捞针。人类需要花费大量时间去阅读日志并弄清楚下一步该测试什么。

论文在现实世界的软件(如流行的 Spring Boot 框架)和一个标准的缺陷数据库 Defects4J 上测试了这个系统。他们将 E-Test 与以下对象进行了对比:

  • 传统方法: 就像是通过观察干草堆的形状来猜测针的位置。
  • 标准 AI: 就像是询问一位尚未学习过特定学科的聪明学生。

结果显示:

  • 传统方法 抓住了大约 34% 的重要场景。
  • 标准 AI 抓住了大约 39%
  • E-Test 抓住了 55%

这听起来可能不是一个巨大的飞跃,但在软件测试领域,从 34% 提升到 55% 是一个巨大的跨越。这意味着在问题到达客户手中之前,我们能捕捉到显著更多的漏洞。

“神奇”的成分

作者并没有仅仅接入一个标准的 AI 然后寄希望于运气。他们做了三件具体的事情来使其奏效:

  1. 微调(Fine-Tuning): 他们专门教导 AI 如何观察代码和漏洞,使其成为测试专家而非通才。
  2. 聪明的问题: 他们没有问“这是一个 Bug 吗?”,而是问了五个具体且细致的问题,以获得更好的答案。
  3. 检索增强生成(RAG): 当代码太大而无法一次性放入 AI 的内存时,系统会调取相关的说明书页面(代码),以便 AI 在回答问题时能够阅读它们。

总结

E-Test 就像是一个不知疲倦、超级聪明的助手,它观察着现实世界中的软件,瞬间识别出软件正在进行的那些奇怪、危险或新颖的行为,并自动编写新的测试来保护软件。它将一个静态的、不完美的清单变成了一个活生生的、不断进化的盾牌。

论文得出结论,这种方法显著缩小了我们“认为”测试了什么与软件在现实世界中“实际经历”了什么之间的差距,从而以更少的人力投入使软件更加可靠。

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

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

试用 Digest →