中文

区分不稳定与故障触发测试失败的重要性:基于 Chromium CI 的案例研究

软件工程 2023-02-22 v1

摘要

不稳定测试(flaky tests)是在被测程序同一版本的不同执行中既通过又失败的测试。它们通过使开发人员调查虚假警报(不稳定测试失败)而浪费宝贵的开发时间。为应对此问题,人们提出了许多识别不稳定测试的预测方法。尽管有前景,这些方法的实际效用仍不清楚,因为它们尚未在持续集成(CI)流程中得到评估。特别是,在不同 CI 周期中漏掉故障(即将故障触发测试失败视为不稳定)的影响仍不清楚。为填补此空白,我们在 Chromium CI 上应用最先进的不稳定性预测方法并检查其性能。或许令人惊讶的是,我们发现尽管这些方法精度很高(99.2%),其应用导致大量故障被漏掉,约占所有回归故障的 76.2%。为解释该结果,我们分析故障触发失败并表明不稳定测试具有很强的故障揭示能力,即它们揭示了超过 1/3 的所有回归故障,表明所有聚焦于识别不稳定测试而非不稳定测试失败的方法存在固有局限。更进一步,我们构建了以失败为中心的预测方法,并通过考虑新特征对其优化。有趣的是,我们发现这些方法优于以测试为中心的方法,MCC 从 0.20 提升至 0.42。总体而言,我们的发现意味着,一方面未来研究应聚焦于预测不稳定测试失败而非不稳定测试,另一方面在评估不稳定性预测方法时需要采用更严谨的实验方法。

关键词

引用

@article{arxiv.2302.10594,
  title  = {The Importance of Discerning Flaky from Fault-triggering Test Failures: A Case Study on the Chromium CI},
  author = {Guillaume Haben and Sarra Habchi and Mike Papadakis and Maxime Cordy and Yves Le Traon},
  journal= {arXiv preprint arXiv:2302.10594},
  year   = {2023}
}