← 最新论文
💬 NLP

Mining Subscenario Refactoring Opportunities in Behaviour-Driven Software Test Suites: ML Classifiers and LLM-Judge Baselines

本文提出了一种自动化流程,该流程利用释义鲁棒性聚类和 XGBoost 分类器来识别、排序和分类行为驱动开发测试套件中的重构机会,结果表明,该分类器在检测大量 Gherkin 文件语料库中可提取的步骤子序列方面,显著优于基于规则和大型语言模型的基线方法。

原作者: Ali Hassaan Mughal, Noor Fatima, Muhammad Bilal

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

原作者: Ali Hassaan Mughal, Noor Fatima, Muhammad Bilal

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

想象你是一位图书管理员,试图整理一座庞大而混乱的图书馆,其中每一本书都是用一种名为 Gherkin 的特殊语言编写的软件测试。这些测试讲述着这样的故事:“给定这种情况,当发生那件事,那么就会出现这个结果。”

随着时间的推移,图书管理员(开发人员)已经写下了成千上万个这样的故事。但他们犯了一个巨大的错误:他们反复复制粘贴相同的段落。有时他们只是在这里或那里改了一个词(例如“点击按钮”与“按下按钮”),但含义完全相同。这使得图书馆变得臃肿、难以阅读,且更新起来如同噩梦。如果你需要更改某个按钮的工作方式,你就必须在数百个不同的地方找到并修复它。

本文旨在构建一位智能机器人图书管理员,它能够发现这些重复的段落,判断哪些值得清理,并确切地告诉你如何修复它们。

以下是本文的分解说明,使用了简单的类比:

1. 问题所在:“复制 - 粘贴”的混乱

过去,研究人员只能识别出整个故事(完整的测试场景)是否是重复的。但真正的混乱发生在故事的中间部分。

  • 类比:想象两本小说,它们的前三章完全相同,但其余部分不同。简单的扫描器可能会忽略这一点,因为整本书并不是复制品。
  • 本文的解决方案:他们检查了被称为"切片"的小文本块(连续 2 到 18 个步骤的组)。他们在 339 个不同的软件项目中发现了超过500 万个这样的切片。

2. “改写”挑战

机器人图书管理员不能仅仅寻找完全匹配的文本。开发人员经常重新措辞。

  • 类比:如果一个人写的是“用户登录”,而另一个人写的是“客户签到”,简单的搜索引擎会将其视为两件不同的事。但人类知道它们的含义相同。
  • 本文的解决方案:他们使用了一种特殊的 AI(称为 SBERT),它能理解词语背后的含义,而不仅仅是拼写。它将含义相同但用词不同的切片归为一组。这就像将所有同义词归类在一起,以便图书管理员能清晰地看到模式。

3. 清理混乱的三种方式

一旦机器人发现了一个重复的切片,它必须决定如何修复它。本文根据重复发生的位置,确定了三种特定的“工具”:

  • 工具 A:“背景”(在单个文件内)

    • 类比:如果某本书中的每个故事都以相同的三句话开头,你不必在每个章节中重写它们。你只需在书的顶部写一次,作为“背景”说明。
    • 何时使用:当相同的步骤在同一个文件内重复时。
  • 工具 B:“可重用章节”(在同一个项目内)

    • 类比:如果同一个图书馆中的 50 本不同的书都出现了相同的事件序列,你只需将这一序列写在一本“可重用章节”书中。然后,在其他 50 本书中,你只需写上“参见可重用章节 4"。
    • 何时使用:当相同的步骤在同一个软件项目的不同文件中重复时。
  • 工具 C:“通用命令”(跨越不同公司)

    • 类比:如果你发现世界上几乎每家图书馆都使用完全相同的短语来表示“登录”,你就可以为此创建一个通用的字典条目。任何图书馆只需说“使用通用登录”即可。
    • 何时使用:当相同的步骤在不同的人或公司拥有的完全不同的软件项目中重复时。

4. “智能大脑”(机器学习与大语言模型)

作者必须教导机器人哪些重复切片实际上值得修复。并非所有重复都有用;有些只是无聊、琐碎的事情(例如"200 状态码”,仅仅意味着“成功了”)。

  • 训练:他们聘请了三位人类专家,查看 200 个随机切片,并决定:“这值得修复吗?”以及“我们应该使用哪种工具(A、B 或 C)?”
  • 竞赛:他们训练了一个智能计算机模型(称为 XGBoost)向这些人类学习。然后,他们将其与另外两位"AI 评委”(大语言模型,即 LLMs)进行挑战。
  • 结果:XGBoost 模型是明确的赢家。
    • 人类专家(XGBoost):正确率高达 89%
    • AI 评委(LLMs):正确率仅为 73%59%
    • 原因:LLMs 过于谨慎。即使是一个好主意,它们也常说“不,不要修复这个”,而专用模型则确切地学会了人类在寻找什么。

5. 主要发现

在将这个机器人应用于包含 110 万个测试步骤的庞大图书馆后,他们发现了以下内容:

  • 重复无处不在:约 75% 的测试文件包含可以通过工具 A(背景)清理的重复块。
  • 跨文件重复很常见:约 60% 的项目包含可以通过工具 B(可重用章节)清理的块。
  • 跨公司重复罕见但真实存在:只有约 12% 的项目包含如此通用的块,以至于可以在不同公司之间共享(工具 C)。
  • “同一所有者”陷阱:他们注意到,许多“跨公司”重复实际上只是同一家公司(如 DataDog)用不同语言发布了其软件的许多不同版本。机器人学会了忽略这些,因为它们并非真正在不同组织之间“共享”。

6. 结论

本文提供了一份蓝图和工具,用于自动发现软件测试中的“复制 - 粘贴”混乱。

  • 它不仅仅说:“嘿,这里有重复。”
  • 它说:“这是重复项,这是它值得修复的原因,以及你需要进行的确切代码更改以修复它。”

作者发布了他们的所有代码、数据以及他们用于指导人类的“规则手册”,以便其他人可以使用这个机器人来清理他们自己的软件库。他们证明,针对这一特定任务,经过专门训练的模型比当今我们经常听到的通用 AI 聊天机器人更出色。

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

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

试用 Digest →