关于在自动化持续集成测试的集体变更后使用机器学习进行故障预测

《Journal of Systems and Software》:On the use of machine learning for failure prediction after collective changes in automated continuous integration testing

【字体: 时间:2026年02月11日 来源:Journal of Systems and Software 4.1

编辑推荐:

  构建失败预测在持续集成中的应用研究。通过机器学习模型预测包含多开发者集体修改的CI构建失败,采用时间分割数据提升评估可靠性。实验表明高精度(60% F1分数)但低召回率特性可节省2.5小时/构建的平均时间,但可能延迟检测约12个失败的构建。

  
作者:?mer ?zdemir、Reyhan Aydo?an、Hasan S?zer
公司:Vestel Elektronik A.?.,地址:土耳其马尼萨市,邮编45030

摘要

持续集成(Continuous Integration,简称CI)是一种开发实践,开发人员定期将他们的代码更改合并到中央仓库中,从而实现跨共享代码库的同步协作。CI中的频繁集成和自动化构建过程有助于在开发早期发现并解决冲突或错误。然而,在大规模系统中,构建过程可能会产生较高的成本。每次构建都会产生费用,而跳过构建则可能增加未检测到故障的风险。准确的预测可以帮助识别可以安全跳过的构建,从而降低CI成本。本文在工业环境中进行了一项实证研究,探讨了使用机器学习技术来预测一系列集体更改后的构建失败情况。与许多采用随机数据分割的方法不同,我们的研究结果表明,按时间顺序(基于时间)进行数据分割能够更真实、更可靠地评估模型在CI环境中的性能。我们在来自实际工业项目的数据集上评估了各种模型和特征组合。我们观察到,在预测失败构建方面精度较高,但召回率较低,这意味着可以正确跳过数百次成功的构建,同时可能会错过大约十几次失败。我们的分析显示,这平均每次构建可以节省约2.5小时的时间;然而,错过的故障必然会导致故障检测延迟,其实际影响取决于应用程序的紧迫性和操作环境。

引言

工业软件开发公司通常更倾向于使用持续集成(CI)系统来加快交付时间(Fitzgerald和Stol,2017;Donca等人,2022;Singh,2023)。这些系统自动化了构建和测试过程,因为用户所做的代码更改会被集成到共同的仓库中。这种自动化使得在早期阶段更容易检测到集成问题,从而降低最终产品中出现错误的风险。特别是夜间构建被广泛使用,允许在整个夜间进行大规模的自动化测试。这些构建确保代码库保持稳定、功能正常,并准备好部署(Suhas和K,2021;Arachchi和Perera,2018)。CI在有多个贡献者的协作环境中特别有用,因为在这种环境中,集成场景可能很复杂且容易出错(Stahl和Bosch,2014;St?hl等人,2017)。
CI系统需要频繁构建项目,这对于构建多层系统(如由不同利益相关者贡献的基于Android的平台)来说尤其具有挑战性。构建整个平台可能需要很长时间。过长的构建时间会显著延长CI测试过程,即使使用夜间构建,也能评估的项目数量也会受到限制(Vassallo等人,2017)。因此,提前预测构建失败并跳过预计会成功的构建可以提高CI系统的效率(Xie和Li,2018;Marijan和Sagar,2018)。
我们研究了在工业环境中准确预测构建失败的有效使用机器学习(ML)模型的方法。虽然许多研究集中在开源项目上,但只有少数研究在工业环境中探讨了这一主题(Kawalerowicz和Madeyski,2023;Hong等人,2024)。我们的研究基于消费电子领域中基于Android的数字电视软件项目的案例研究。我们使用了各种模型进行了广泛的实证分析,这些模型使用了现有和新特征的组合进行训练。这些特征包括从开发人员和修改文件的分类中提取的特征。相比之下,仅依赖开发人员身份和修改文件的现有研究在动态的工业环境中并不适用,因为在这些环境中,开发人员和文件会随着时间频繁变化(Gligoric等人,2015;Abdalkareem等人,2019)。
我们研究的另一个重要区别在于,它专注于预测涉及多名开发人员的多项更改的构建结果,而不是由单一更改引发的构建结果(Sharif等人,2021;Marijan,2023;Liang,2024;Camacho,2024)。在大型、多层次的工业项目中,软件构建非常耗时,对每个单独的代码更改采取行动通常是不切实际的(Memon等人,2017)。因此,包含多名开发人员及其集体更改的CI测试变得不可避免。我们的评估还考虑了实际CI过程的时间结构。监督式ML模型通常通过将数据分为训练集和测试集来进行评估。尽管在先前的研究中随机数据分割取得了有希望的结果(Yaraghi等人,2022;Abdalkareem等人,2020;Lee等人,2019),但我们的发现表明,按时间顺序进行数据分割能够提供更真实、更可靠的评估。我们观察到,在预测失败构建方面精度较高,但召回率较低,F1分数最高达到60%。这种权衡使得可以正确跳过数百次成功的构建,同时可能会错过大约十几次失败。我们从开发人员的角度进行了分析,重点关注通过跳过构建节省的时间以及延迟故障检测的影响。我们的研究结果表明,开发人员平均每次构建可以节省约2.5小时的时间。在所有假阴性情况下,跳过构建至少会延迟一个构建周期的故障检测;然而,这种延迟并不总是可以有意义地量化,因为大多数故障在下次构建执行之前就已经被修复了。无论测量挑战如何,延迟故障检测的影响都取决于应用程序的紧迫性和操作环境。本研究的贡献总结如下:
  • 基于ML的方法,用于预测由多名开发人员贡献的集体更改所导致的CI构建失败。
  • 对开发人员和修改文件进行分类,以获得能够在工业环境中抵抗动态变化的特征。
  • 发布了一个来自工业软件项目的新匿名数据集,并向公众公开。
  • 使用多种ML算法和特征组合进行了全面评估。
  • 证据表明,按时间顺序(基于时间)进行数据分割能够提供更真实、更可靠的模型性能,相比随机分割而言。
本文的其余部分安排如下:第2节总结相关工作。第3节解释了整体框架、研究问题和数据集。第4节详细介绍了我们的实验设置和评估方法。第5节展示了结果并进行了讨论。最后,在第5.3节对本文进行了总结。

相关研究

大多数关于构建失败预测的研究主要关注利用与源代码更改相关的特征,如修改的行数和添加的代码行数(Kawalerowicz和Madeyski,2023;Hong等人,2024;Chen等人,2020;Saidani等人,2022;Pan和Pradel,2021;Yaraghi等人,2022;Abdalkareem等人,2020;Lee等人,2019;Grano等人,2019)。除了这些特征外,其他研究还考虑了修改的文件或目录的数量(Hong等人,2024)。

构建失败预测框架和研究问题

整个构建失败预测过程如图1所示,它被构建为一个分类问题。一组开发人员共同在一个共享的代码仓库上工作,并在其中提交他们的更改。这些提交由版本控制系统跟踪和存储。然后从这个系统收集数据以及与开发人员相关的元数据,如修改的文件列表、更改的代码行数、提交时间戳和开发人员标识符。对这些收集的数据进行分析

实验设置和评估

由于我们提倡采用按时间顺序进行训练-测试分割(即仅使用截至给定时间点的数据来预测未来结果),以获得更真实的场景,我们首先研究了数据分割(即随机打乱或按时间顺序排列的数据)对模型构建失败预测性能的影响。因此,我们按照图2所示设置了第一个实验。数据集通过考虑两种分割方法来进行分割

结果与讨论

在本节中,我们首先检查了随机分割和按时间顺序分割训练数据及测试数据的预测准确性。然后,使用特征分析技术分析了特征集,并根据特征的重要性评估了传统ML算法的性能。接着,研究了不同特征集组合下的集成算法的有效性。在节末讨论了对有效性的威胁。

结论与未来工作

在这项研究中,我们研究了在工业环境中应用ML技术来预测持续集成(CI)环境中的构建结果。我们的目标是识别可以安全跳过的构建,以降低CI成本,同时不会显著增加未检测到故障的风险。我们提出了一种基于多名开发人员贡献的集体代码更改的预测方法,并通过开发人员和修改文件的分类提取了具有抵抗性的特征

CRediT作者贡献声明

?mer ?zdemir:撰写——原始草稿,验证,软件,资源,调查,数据整理,概念化。
Reyhan Aydo?an:撰写——审阅与编辑,撰写——原始草稿,验证,监督,软件,方法论,调查。
Hasan S?zer:撰写——审阅与编辑,撰写——原始草稿,监督,项目管理,方法论,调查,概念化。

利益冲突声明

作者声明他们没有已知的财务利益或个人关系可能影响本文报告的工作。
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号