辨别合法失败与虚假告警:Chromium 持续集成的一项研究
软件工程
2021-11-08 v1
摘要
Flakiness(不稳定测试)是软件测试中的一个主要问题。不稳定测试对同一程序版本既通过又失败,误导开发人员耗费时间和资源调查测试失败,结果发现只是虚假告警。实践中,解决此问题的默认方法是对失败测试重新运行,希望其通过并表现为虚假告警。然而,完全过滤虚假告警可能需要不成比例的多次重跑,从而在计算和时间上产生显著成本。作为重跑的替代方案,我们提出 Fair,一种新颖轻量的方法,将测试失败分类为虚假告警与合法失败。Fair 依赖于一个分类器以及来自失败和测试制品的一组特征。为构建和评估我们的机器学习分类器,我们使用 Chromium 项目的持续集成。具体而言,我们从 2000 次构建中收集了超过 100 万次测试失败的性质与制品。结果显示 Fair 能准确区分合法失败与虚假告警,MCC 高达 95%。此外,通过研究不同测试类别:GUI、集成与单元测试,我们表明即便失败数量有限,Fair 也能准确分类。最后,我们将本方法成本与重跑比较,显示 Fair 每次构建可节省多达 20 分钟计算时间。
引用
@article{arxiv.2111.03382,
title = {Discerning Legitimate Failures From False Alerts: A Study of Chromium's Continuous Integration},
author = {Guillaume Haben and Sarra Habchi and Mike Papadakis and Maxime Cordy and Yves Le Traon},
journal= {arXiv preprint arXiv:2111.03382},
year = {2021}
}