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

📄 arXiv: 2605.14568v1 📥 PDF

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

分类: cs.SE, cs.CL, cs.LG

发布日期: 2026-05-14

备注: 30 pages, 12 figures and tables, 58 references. Under review at Software Quality Journal (Springer). Reproduction package at https://github.com/amughalbscs16/cukereuse_subscenarios_release (Apache-2.0). Upstream cukereuse corpus at https://doi.org/10.5281/zenodo.19754359


💡 一句话要点

提出一种基于机器学习和LLM的BDD测试套件子场景重构机会挖掘方法

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 行为驱动开发 软件测试 代码重构 机器学习 自然语言处理 子场景挖掘 XGBoost

📋 核心要点

  1. BDD测试套件中存在大量重复的步骤子序列,手动识别和重构这些子序列耗时且容易出错。
  2. 该论文提出了一种基于机器学习和LLM的自动化方法,用于识别和评估BDD测试套件中的子场景重构机会。
  3. 实验结果表明,该方法能够有效地识别值得重构的子序列,并优于现有的规则基线和LLM方法。

📝 摘要(中文)

本文旨在自动化识别行为驱动开发(BDD)软件测试套件中值得提取的重复步骤子序列(“切片”),并将其映射到三种已发布的重构模式(文件内Background、仓库内可重用场景调用、跨组织共享高级步骤)。该方法首先利用Sentence-BERT (SBERT) / UMAP / HDBSCAN从包含339个仓库的Gherkin语料库中恢复释义等效的切片。然后,三位作者根据书面规则对分层抽取的200个切片进行标注。最后,使用5折交叉验证训练的eXtreme Gradient Boosting (XGBoost)分类器与调优的规则基线和两个开放权重的大型语言模型(LLM)进行比较。实验结果表明,该分类器在提取值得重构的切片方面优于基线方法,并揭示了BDD代码库中潜在的重构机会。

🔬 方法详解

问题定义:BDD测试套件中存在大量重复的步骤子序列,这些重复代码降低了代码的可维护性和可读性。现有的重构模式需要人工识别和应用,效率低下且容易出错。因此,需要一种自动化的方法来识别和评估这些重构机会。

核心思路:该论文的核心思路是利用机器学习和自然语言处理技术,自动识别BDD测试套件中具有相似语义的重复步骤子序列(切片),并评估其重构价值。通过训练分类器来预测切片是否值得提取和重构,并将其映射到合适的重构模式。

技术框架:该方法主要包含以下几个阶段:1) 语料库构建:收集包含大量BDD测试用例的Gherkin语料库。2) 切片提取:从每个测试用例中提取所有可能的连续步骤子序列(切片)。3) 释义聚类:使用Sentence-BERT (SBERT)对切片进行语义编码,然后使用UMAP进行降维,最后使用HDBSCAN进行聚类,将语义相似的切片聚为一类。4) 人工标注:对一部分切片进行人工标注,标注其是否值得重构以及适合的重构模式。5) 模型训练:使用标注数据训练XGBoost分类器,用于预测切片是否值得重构。6) 模型评估:使用交叉验证评估分类器的性能,并与基线方法进行比较。

关键创新:该论文的关键创新在于:1) 提出了一种基于SBERT/UMAP/HDBSCAN的释义聚类方法,能够有效地识别语义相似的切片。2) 使用机器学习分类器自动评估切片的重构价值,避免了人工评估的繁琐和主观性。3) 对比了机器学习方法与LLM在子场景重构机会挖掘任务上的表现。

关键设计:在切片提取阶段,考虑了不同长度的切片(L在[2, 18]范围内)。在释义聚类阶段,使用了Sentence-BERT进行语义编码,并使用UMAP进行降维,以提高聚类效率。在模型训练阶段,使用了XGBoost分类器,并进行了5折交叉验证。人工标注时,由三位作者共同标注,并计算Fleiss' kappa系数来评估标注的一致性。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,该论文提出的XGBoost分类器在提取值得重构的切片方面达到了F1值为0.891(95% CI [0.852, 0.927]),优于规则基线(F1 = 0.836, p = 0.017)和LLM judge(F1 = 0.728, p < 1e-4)。该研究还发现,75.0%, 59.5%, 和 11.7% 的场景分别包含文件内Background、仓库内可重用场景和跨组织共享步骤的重构候选。

🎯 应用场景

该研究成果可应用于软件测试和维护领域,帮助开发人员自动识别和重构BDD测试套件中的重复代码,提高代码质量和可维护性。此外,该方法还可以用于代码克隆检测、代码相似性分析等任务,具有广泛的应用前景。

📄 摘要(原文)

Context. Behaviour-Driven Development (BDD) software test suites accumulate duplicated step subsequences. Three published refactoring patterns are available (within-file Background, within-repo reusable-scenario invocation, cross-organisational shared higher-level step), but no prior work automates which recurring subsequences are worth extracting or which mechanism applies. Objective. Rank recurring step subsequences ("slices") by refactoring suitability (extraction-worthy), pre-map each to one of the three patterns, and quantify prevalence across the public BDD ecosystem. Method. Every contiguous L-step window (L in [2, 18]) in a 339-repository / 276-upstream-owner Gherkin corpus is keyed by paraphrase-robust cluster identifiers and counted under three scopes. Sentence-BERT (SBERT) / Uniform Manifold Approximation and Projection (UMAP) / Hierarchical Density-Based Clustering (HDBSCAN) recovers paraphrase-equivalent slices. Three authors label a stratified 200-slice pool against a written rubric. An eXtreme Gradient Boosting (XGBoost) extraction-worthy classifier trained under 5-fold cross-validation is compared with a tuned rule baseline and two open-weight Large Language Model (LLM) judges. Results. The miner produces 5,382,249 slices collapsing to 692,020 recurring patterns. Three-author Fleiss' kappa = 0.56 (extraction-worthy) and 0.79 (mechanism). The classifier reaches out-of-fold F1 = 0.891 (95% CI [0.852, 0.927]), outperforming both the rule baseline (F1 = 0.836, p = 0.017) and the better LLM judge (F1 = 0.728, p < 1e-4). 75.0%, 59.5%, and 11.7% of scenarios carry a within-file Background, within-repo reusable-scenario, or cross-organisational shared-step candidate. Conclusion. Paraphrase-robust subscenario discovery yields a corpus-wide census of BDD refactoring opportunities; pipeline, classifier predictions, labelled pool, and rubric are released under Apache-2.0.