Not logged in.

Contribution Details

Type Bachelor's Thesis
Scope Discipline-based scholarship
Title Understanding Flaky Tests: Relevance, Nature, and Challenges
Organization Unit
Authors
  • Moritz Eck
Supervisors
  • Alberto Bacchelli
  • Fabio Palomba
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2018
Abstract Text Regression testing allows developers to control that newly committed code changes do not introduce new defects. Unfortunately, even tests might be defective. One of the issues reported by practitioners and researchers concerning tests is flakiness, which consists in tests that exhibit a seemingly random passing and failing outcome when run against the same code. While the research community has investigated automated solutions to locate and fix flaky tests, there is still limited knowledge on (i) how much the problem is relevant in practice, (ii) what is the cause of the flakiness, (iii) what are the challenges developers perceive when dealing with flaky tests and (iv) to what extent the cause for flakiness can be classified automatically. With the aim of increasing our scientific knowledge on these aspects, we conduct an empirical investigation that relies on (1) software repository data (pertaining to 391 software systems), (2) a novel dataset of 200 flaky tests classified by the practitioners who fixed those tests, (3) the opinions of 120 developers collected in an online questionnaire and (4) a machine learning approach automatically classifying the cause of the flakiness. The results of our study highlight that (i) the problem of test flakiness is relevant and (ii) characterized by several causes, of which four have never been reported before, despite being costly to fix. Furthermore, we find that, among the challenges faced by developers, (iii) test reproduction and the classification of the cause for flakiness are the most pressing. Finally, (iv) we propose a two stage machine learning approach to automatically classify the cause for flakiness, achieving an F-Measure of 75% and AUC-ROC of 91% when considering the seven most frequent types of flakiness.
Zusammenfassung Regressionstests ermöglichen es Entwicklern zu kontrollieren, dass Code-Änderungen keine neuen Fehler verursachen. Leider können auch diese Art von Tests fehlerhaft sein. Ein Problem, welches häufig von Praktikern und Forschern in Bezug auf Testfehler berichtet wird, ist die Flakiness. Test Flakiness charakterisiert sich durch ein nicht deterministisches Verhalten, welches sich in einem scheinbar zufälligem Bestehen oder Scheitern eines Tests äussert, obwohl dieser den gleichen, unveränderten Code getestet hat. Während in der Forschung automatisierte Lösungen zur Lokalisierung und Behebung von Flaky-Tests untersucht wurden, ist das Wissen bezüglich, (i) in wie fern das Problem in der Praxis relevant ist, (ii) was die Ursache der Flaky-Tests ist, (iii) welche Herausforderungen sich Entwickler im Umgang mit Flaky-Tests stellen und (iv) in wie weit die Ursache der Flaky-Tests automatisch klassifiziert werden kann, immer noch sehr begrenzt. Mit dem Ziel, unser Wissen bezüglich dieser Aspekte zu erweitern, führen wir eine empirische Untersuchung durch, welche sich auf die folgenden Quellen stützt: (1) Software-Repository-Daten (in Bezug auf 391 Softwaresysteme); (2) einen Datensatz von 200 Flaky-Tests, welche von den Entwicklern, welche die Flakiness behoben haben, klassifiziert wurden; (3) die Meinungen von 120 Entwicklern, die in einem Online-Fragebogen gesammelt wurden; (4) und einem Machine-Learning Modell, welches automatisch die Ursache der Flakiness klassifiziert. Die Ergebnisse unserer Arbeit zeigen, dass (i) das Problem der Flakiness relevant und (ii) durch mehrere Ursachen gekennzeichnet ist, von denen vier nie zuvor berichtet wurden, obwohl sie aufwändig zu beheben sind. Darüber hinaus stellen wir fest, dass unter den Herausforderungen, denen sich Entwickler gegenübersehen, (iii) die Reproduktion von Tests und die Klassifizierung der Ursache der Flakiness am dringlichsten sind. Abschliessend (iv) präsentieren wir ein zweistufiges Machine-Learning Modell, welches die Ursache bis anhin unbekannter Flaky-Tests automatisch klassifiziert. Das Modell erreicht einen F-Measure von 75% und einen AUC-ROC von 91%, wenn die sieben häufigsten Kategorien von Test Flakiness in Betracht gezogen werden.
PDF File Download
Export BibTeX