Not logged in.

Contribution Details

Type Bachelor's Thesis
Scope Discipline-based scholarship
Title An isolated containerized infrastructure for flakiness discovery; Implementation of a Prototype
Organization Unit
Authors
  • Fabio Greter
Supervisors
  • Harald Gall
  • Pasquale Salza
  • Valerio Terragni
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2021
Abstract Text As software projects increase in complexity, testing becomes ncreasingly important. It is essential that tests can be built to ensure that a test failure reliably indicates problems in production code, which can then easily be fixed. Because modern software systems have become inherently nondeterministic, intermittent test failures are also becoming more frequent, in what is known as flaky tests. Existing techniques to remedy this problem focus on efficient detection of flaky tests without identifying the root causes of their intermittent behaviour, or are specific to certain root causes. Other approaches rely on instrumentation of the production code, which may affect test outcomes. In this thesis, we present a prototype implementation of an architecture to induce test flakiness by executing tests under various circumstances, called execution scenarios. Our prototype allows for flexible implementation of these scenarios and provides an API to be used in various environments, such as continuous integration pipelines. We find that it can reproduce known flaky test behaviour, and that in some cases, our prototype execution scenarios can exhibit different failure rates for certain test cases. We also propose future enhancements to continue development on the prototype.
Zusammenfassung Da Softwareprojekte zunehmend komplexer werden, wird das Testen ebenfalls immer wichtiger. Es ist essentiell, dass Tests so konstruiert werden können, dass sie im Falle eines Versagens zuverlässig Probleme im Produktions-Code indizieren, die dann einfach behoben werden können. Da moderne Softwaresysteme aber zunehmend undeterministisches Verhalten zeigen, können Testfälle intermittierend fehlschlagen. Dieses Phänomen ist als “Flaky Test” bekannt. Aktuelle Techniken um dieses Problem zu beheben, konzentrieren sich vor allem auf effiziente Entdeckung der Flaky Tests, ohne ihre Ursachen zu identifizieren, oder können nur spezifische Ursachen entdecken. Weitere Ansätze verlassen sich auf Instrumentierung des Produktionscodes, was Testresultate beeinflussen kann. In dieser Arbeit präsentieren wir eine Prototyp-Implementierung einer Architektur, die gezielt “Test Flakiness” hervorrufen soll, indem die Tests unter verschiedenen Bedingungen, genannt “Execution scenario”, ausgeführt werden. Unser Prototyp erlaubt eine flexible Implementierung dieser Szenarios und stellt eine API zur Verfügung, die in verschiedenen Umgebungen benutzt werden kann, zum Beispiel in Continuous Integration Pipelines. Wir zeigen, dass unser Prototyp bekannte Flaky Tests reproduzieren kann, und dass unsere Execution scenarios in einigen Fällen unterschiedliches Verhalten zeigen. Desweiteren zeigen wir verschiedene zukünftige Erweiterungen auf, um unseren Prototyp weiterzuentwickeln.
PDF File Download
Export BibTeX