Cargando…

Static test flakiness prediction: How Far Can We Go?

Test flakiness is a phenomenon occurring when a test case is non-deterministic and exhibits both a passing and failing behavior when run against the same code. Over the last years, the problem has been closely investigated by researchers and practitioners, who all have shown its relevance in practic...

Descripción completa

Detalles Bibliográficos
Autores principales: Pontillo, Valeria, Palomba, Fabio, Ferrucci, Filomena
Formato: Online Artículo Texto
Lenguaje:English
Publicado: Springer US 2022
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9526694/
https://www.ncbi.nlm.nih.gov/pubmed/36199835
http://dx.doi.org/10.1007/s10664-022-10227-1
_version_ 1784800936637497344
author Pontillo, Valeria
Palomba, Fabio
Ferrucci, Filomena
author_facet Pontillo, Valeria
Palomba, Fabio
Ferrucci, Filomena
author_sort Pontillo, Valeria
collection PubMed
description Test flakiness is a phenomenon occurring when a test case is non-deterministic and exhibits both a passing and failing behavior when run against the same code. Over the last years, the problem has been closely investigated by researchers and practitioners, who all have shown its relevance in practice. The software engineering research community has been working toward defining approaches for detecting and addressing test flakiness. Despite being quite accurate, most of these approaches rely on expensive dynamic steps, e.g., the computation of code coverage information. Consequently, they might suffer from scalability issues that possibly preclude their practical use. This limitation has been recently targeted through machine learning solutions that could predict the flakiness of tests using various features, like source code vocabulary or a mixture of static and dynamic metrics computed on individual snapshots of the system. In this paper, we aim to perform a step forward and predict test flakiness only using static metrics. We propose a large-scale experiment on 70 Java projects coming from the iDFlakies and FlakeFlagger datasets. First, we statistically assess the differences between flaky and non-flaky tests in terms of 25 test and production code metrics and smells, analyzing both their individual and combined effects. Based on the results achieved, we experiment with a machine learning approach that predicts test flakiness solely based on static features, comparing it with two state-of-the-art approaches. The key results of the study show that the static approach has performance comparable to those of the baselines. In addition, we found that the characteristics of the production code might impact the performance of the flaky test prediction models.
format Online
Article
Text
id pubmed-9526694
institution National Center for Biotechnology Information
language English
publishDate 2022
publisher Springer US
record_format MEDLINE/PubMed
spelling pubmed-95266942022-10-03 Static test flakiness prediction: How Far Can We Go? Pontillo, Valeria Palomba, Fabio Ferrucci, Filomena Empir Softw Eng Article Test flakiness is a phenomenon occurring when a test case is non-deterministic and exhibits both a passing and failing behavior when run against the same code. Over the last years, the problem has been closely investigated by researchers and practitioners, who all have shown its relevance in practice. The software engineering research community has been working toward defining approaches for detecting and addressing test flakiness. Despite being quite accurate, most of these approaches rely on expensive dynamic steps, e.g., the computation of code coverage information. Consequently, they might suffer from scalability issues that possibly preclude their practical use. This limitation has been recently targeted through machine learning solutions that could predict the flakiness of tests using various features, like source code vocabulary or a mixture of static and dynamic metrics computed on individual snapshots of the system. In this paper, we aim to perform a step forward and predict test flakiness only using static metrics. We propose a large-scale experiment on 70 Java projects coming from the iDFlakies and FlakeFlagger datasets. First, we statistically assess the differences between flaky and non-flaky tests in terms of 25 test and production code metrics and smells, analyzing both their individual and combined effects. Based on the results achieved, we experiment with a machine learning approach that predicts test flakiness solely based on static features, comparing it with two state-of-the-art approaches. The key results of the study show that the static approach has performance comparable to those of the baselines. In addition, we found that the characteristics of the production code might impact the performance of the flaky test prediction models. Springer US 2022-10-01 2022 /pmc/articles/PMC9526694/ /pubmed/36199835 http://dx.doi.org/10.1007/s10664-022-10227-1 Text en © The Author(s) 2022 https://creativecommons.org/licenses/by/4.0/Open AccessThis article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/ (https://creativecommons.org/licenses/by/4.0/) .
spellingShingle Article
Pontillo, Valeria
Palomba, Fabio
Ferrucci, Filomena
Static test flakiness prediction: How Far Can We Go?
title Static test flakiness prediction: How Far Can We Go?
title_full Static test flakiness prediction: How Far Can We Go?
title_fullStr Static test flakiness prediction: How Far Can We Go?
title_full_unstemmed Static test flakiness prediction: How Far Can We Go?
title_short Static test flakiness prediction: How Far Can We Go?
title_sort static test flakiness prediction: how far can we go?
topic Article
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9526694/
https://www.ncbi.nlm.nih.gov/pubmed/36199835
http://dx.doi.org/10.1007/s10664-022-10227-1
work_keys_str_mv AT pontillovaleria statictestflakinesspredictionhowfarcanwego
AT palombafabio statictestflakinesspredictionhowfarcanwego
AT ferruccifilomena statictestflakinesspredictionhowfarcanwego