中文

基于少样本学习的易变测试类别预测

软件工程 2022-09-01 v1

摘要

易变测试(flaky tests)是指在同一程序版本上运行时产生不同结果的测试。这种非确定性行为以虚假信号困扰持续集成,浪费开发人员时间并降低其对测试套件的信任。研究强调了保持测试无易变性的重要性。近来,研究界通过提出许多静态与动态方法推动易变测试的检测。尽管有前景,这些方法主要聚焦于将测试分类为易变或否,且即便报告了高性能,理解易变性的成因仍具挑战。此部分对于旨在修复该问题的研究人员和开发者至关重要。为帮助理解给定易变测试,我们提出 FlakyCat,首个基于根因类别对易变测试进行分类的方法。FlakyCat 依赖 CodeBERT 进行代码表示,并利用基于 Siamese 网络的少样本学习(Few-Shot learning)方法以少量数据训练多类分类器。我们在从开源 Java 项目收集的 343 个易变测试集合上训练并评估 FlakyCat。我们的评估显示 FlakyCat 能准确分类易变测试,加权 F1 分数为 70%。此外,我们考察了该方法在各类别上的性能,揭示异步等待、无序集合和与时间相关易变测试被准确分类,而与并发相关的易变测试更难预测。最后,为便于理解 FlakyCat 的预测,我们提出一种基于 CodeBERT 模型可解释性的新技术,可高亮影响分类的代码语句。

关键词

引用

@article{arxiv.2208.14799,
  title  = {Predicting Flaky Tests Categories using Few-Shot Learning},
  author = {Amal Akli and Guillaume Haben and Sarra Habchi and Mike Papadakis and Yves Le Traon},
  journal= {arXiv preprint arXiv:2208.14799},
  year   = {2022}
}