Die Stabilität von automatisierten Tests ist ein wichtiger Aspekt für ein sicheres CI/CD und Vertrauen in die Automatisierung.
Geschichte der Frage
Zunächst wurden automatisierte Tests manuell ausgeführt, und die Instabilität störte nicht wirklich. Mit der zunehmenden Anzahl von Tests und der Integration in Pipelines wurde das Auftreten von flakey Tests (Tests, die manchmal ohne ersichtlichen Grund fehlschlagen) ein großes Problem.
Problem
Flakey Tests führen zu:
Lösung
Was hilft:
Beispiel für die Verwendung von Wartezeiten:
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
Schlüsselfunktionen:
Löst eine massenhafte Wiederholung das Problem der flakey Tests?
Nein, das ist nur ein temporäres "Stopfen von Löchern". Es behebt nicht die Ursache — es maskiert nur bestehende Probleme.
Kann man automatisierte Tests nur nachts ausführen, um Ausfälle durch Last zu vermeiden?
Der Testlauf in der Nacht wird die Instabilität nicht beheben, sondern nur die Wahrscheinlichkeit senken; das Problem bleibt bestehen, man muss die Ursachen angehen.
Sollten alle flakey Tests sofort entfernt werden?
Nein. Es ist besser, die Ursache zu lokalisieren und zu beheben — nur wenn es nicht gelingt, stabil zu machen oder es ein veralteter, irrelevanter Test ist — dann löschen.
Das Team griff auf massenhafte Wiederholungen von Tests zurück, die ständig flakierten. Infolgedessen wuchs die Liste der "grünen" Tests, aber die Qualität der automatisierten Tests verbesserte sich nicht — Fehler wurden übersehen.
Vorteile:
Nachteile:
Das Team fand und beschrieb systematische flakey-Ursachen: ungehegte Daten, UI-Verzögerungen, Netzwerkprobleme. Die Architektur wurde angepasst, durchdachte Wartezeiten wurden hinzugefügt, die Umgebung wurde eingerichtet — die Anzahl der instabilen Tests fiel drastisch.
Vorteile:
Nachteile: