返回
Flakify: A Black-Box, Language Model-Based Predictor for Flaky Tests
DOI:10.1109/TSE.2022.3201209.png)
摘要
En 中文
软件测试确保代码更改不会对现有功能产生不利影响。然而,测试用例可能是片状的,即,跨执行通过和失败,即使对于相同版本的源代码。片状测试用例会给软件开发带来开销,因为它们会导致不必要的调试生产或测试代码的尝试。除了多次重新运行测试用例 (耗时且计算昂贵) 之外,还可以使用机器学习 (ML) 模型预测片状测试用例,从而减少重新运行和调试这些测试用例的浪费成本。然而,最先进的基于ML的片状测试用例预测器依赖于预定义的特征集,这些特征集要么是特定于项目的,即不适用于其他项目,要么需要访问生产代码,而软件测试工程师并不总是可以使用。此外,考虑到片状测试用例的非确定性行为,确定可能潜在地与测试片状相关联的完整的一组特征可能是具有挑战性的。因此,在本文中,我们提出了Flakify,这是一种基于黑盒,基于语言模型的预测器,用于片状测试用例。Flakify完全依赖于测试用例的源代码,因此不需要 (a) 访问生产代码 (黑盒),(b) 重新运行测试用例,(c) 预定义功能。为此,我们采用了CodeBERT,这是一种预先训练的语言模型,并对其进行了微调,以使用测试用例的源代码来预测片状测试用例。我们在两个公开可用的数据集 (FlakeFlagger和IDoFT) 上评估了Flakify的片状测试用例,并将我们的技术与FlakeFlagger方法进行了比较,FlakeFlagger方法是最先进的基于ML的白盒预测器,用于片状测试用例,使用两种不同的评估程序: (1) 交叉验证和 (2) 每个项目验证,即对新项目的预测。Flakify分别使用交叉验证和每个项目验证在FlakeFlagger数据集上实现了79% 和73% 的F1-scores。同样,Flakify分别使用两个F1-scores程序在IDoFT数据集上实现了98% 和89% 的验证。此外,当在FlakeFlagger数据集上进行评估时,Flakify在精度和召回率方面分别超过FlakeFlagger 10和18个百分点 (pp),因此,以相同的百分比 (对应于25% 和64% 的降低率) 减少了在不必要的调试测试用例和生产代码上浪费的成本。当用于预测新项目的测试用例时,Flakify还获得了更高的预测结果,这表明与FlakeFlagger相比具有更好的通用性。我们的结果进一步表明,黑盒版本的FlakeFlagger不是预测片状测试用例的可行选择。
Keyword:
Flaky tests
software testing
black-box testing
natural language processing
CodeBERT
期刊
IF:
5.6
论文数:
2.9K
被引数:
1.1W
机构
引用论文
Isolation and characterization of two types of actinophage infectingStreptomyces scabies感染疥疮链霉菌的两种类型的放线噬菌体的隔离和表征

