Tests, die trotz unveränderter Codebasis inkonsistente Ergebnisse produzieren, werden flaky Tests genannt. Ist man sich deren nicht-deterministischem Verhaltens nicht bewusst, können sie Fehler verbergen oder fälschlicherweise neue Probleme vortäuschen.
Um dies zu verhindern, müssen flaky Tests als solche erkannt werden, was meist kostspielig ist. Ist der Nicht-Determinismus von Tests auf deren Ausführungsreihenfolge zurückzuführen, ermöglicht das Variieren der Reihenfolge zwar eine effiziente Erkennung der Flakiness, nicht-reihenfolgeabhängige (NOD) flaky Tests müssen in der Regel allerdings vielfach ausgeführt werden, um abweichende Ergebnisse zu entdecken.
Wir schlagen einen Ansatz vor, der die Anzahl der zur Erkennung von Flakiness erforderlichen Ausführungen reduziert, indem die Mehrheit aller nicht-flaky Tests im Voraus identifiziert werden. Frühere Studien haben gezeigt, dass dynamische Programmanalyse bereits bei der Behebung von Flakiness hilft, indem man Programmabläufe analysiert, um die zugrunde liegenden Ursachen von Flakiness zu identifizieren. Folglich nehmen wir an, dass das Auswerten von Funktionsaufrufen Flakiness aufzeigen könnte und dass das Fehlen bestimmter Funktionen einen Test als nicht flaky identifizieren kann.
Zunächst stellen wir verschiedene Verfahren zur Identifizierung von Funktionen vor, deren Vorkommen charakteristisch für die Flakiness von Tests ist. Anschließend bewerten wir diese Ansätze und die dadurch erhaltenen Funktionen. Sowohl manuelle als auch halbautomatische Verfahren erzielen vielversprechende Ergebnisse. Schließlich prüfen wir, ob diese den Aufwand für die Erkennung von NOD-Flakiness reduzieren können.
Während wir die Anzahl der benötigten Test-Ausführungen für die Erkennung von NOD-Flakiness stark reduzieren können, sparen wir keine Zeit, da wir größtenteils kleine Tests ausschließen und das Speichern der Funktionsaufrufe ebenfalls Zeit benötigt. Für fast die Hälfte aller untersuchten Projekte ist unser Ansatz besser, bei den restlichen werden entweder NOD flaky Tests übersehen oder mehr Zeit zur Erkennung benötigt. Zusammenfassend lässt sich sagen, dass der vorgestellte Ansatz zur Erkennung von Flakiness nicht generell empfehlenswert ist, in bestimmten Fällen allerdings deutliche Verbesserung birgt.
«
Tests, die trotz unveränderter Codebasis inkonsistente Ergebnisse produzieren, werden flaky Tests genannt. Ist man sich deren nicht-deterministischem Verhaltens nicht bewusst, können sie Fehler verbergen oder fälschlicherweise neue Probleme vortäuschen.
Um dies zu verhindern, müssen flaky Tests als solche erkannt werden, was meist kostspielig ist. Ist der Nicht-Determinismus von Tests auf deren Ausführungsreihenfolge zurückzuführen, ermöglicht das Variieren der Reihenfolge zwar eine effiziente...
»