Locker flockig

Gradle: Neues Plug-in gegen Flaky-Tests veröffentlicht

Dominik Mohilo

© Shutterstock / Irina Kvyatkovskaya

Software ist eine binäre Angelegenheit. Nullen und Einsen. Wahr oder Falsch. Sogenannte „flaky“ Tests widersprechen diesem einfachen Prinzip: Gemeint sind Tests, die verschiedene Ergebnisse für die gleichen Tasks ausgeben. Mit einem neuen Plug-in will man im Hause Gradle diese Störenfriede dezent loswerden.

Zeit ist bei der Softwareentwicklung ein nicht zu vernachlässigender Faktor. Deadlines, Kundenansprüche und Sicherheitslücken machen es notwendig, dass Software regelmäßig ausgeliefert oder aktualisiert wird. Natürlich soll das Ganze nach Möglichkeit keine neuen Probleme durch Fehler und Bugs verursachen, weshalb getestet werden muss. Was aber tun, wenn ein Test mal erfolgreich ist und mal nicht, ohne dass etwas geändert wurde? Sogenannte Flaky-Tests können ganze Continuous-Delivery- bzw. Continuous-Integration-Pipelines verstopfen und alles verzögern.

Eine Lösung sind mehrere aufeinanderfolgende Build-Prozesse – man probiert es eben, bis einer durchgeht. Da dies ein eher suboptimaler Ansatz ist, hat man seitens Gradle nun ein neues Plug-in bereitgestellt, dass dabei helfen soll, Flaky-Tests zu identifizieren, priorisieren und fixen. Im Gegensatz zu anderen Tools wird hierbei nicht der gesamte Build-Prozess wiederholt, um herauszufinden, ob ein Test „flaky“ ist. Stattdessen werden nur die fehlerhaften Tests wiederholt, um die „Flakiness“ zu identifizieren.

Java Whitepaper

Gratis-Dossier: Java 2020 – State of the Art

GraalVM, Spring Boot 2.2, Kubernetes, Domain-driven Design & Machine Learning sind einige der Themen, die Sie in unserem brandneuen Dossier 2020 wiederfinden werden!

Vorteil des Ganzen ist, dass keine Änderungen am Quellcode nötig sind. Das Plug-in erlaubt sogar die Voreinstellung, Builds, in denen zweifelsfrei Flaky-Tests vorkommen, automatisch durchzuwinken oder failen zu lassen. Auch, wie oft ein Test wiederholt werden soll, ist via maxFailures-Parameter individuell einstellbar. Zu guter Letzt werden die Tests auf der Ebene von Methoden durchgeführt oder sogar feingranulierter, wodurch ganze Klassen nicht jedes Mal neu getestet werden müssen. Standardmäßig (auch das ist individualisierbar) werden alle Builds durchgewunken, bei denen nach einer bestimmten Anzahl an Retrys die Tests erfolgreich sind, sodass der Build erfolgreich ist.

Verfügbar ist das Plug-in für Eclipse, NetBeans und IntelliJ IDEA, außerdem wurde es erfolgreich mit JUnit 4 (4.12), JUnit 5 (5.5.2), Spock (1.3-groovy-2.5) und TestNG (7.0.0) verwendet. Kompatibel ist es mit sämtlichen Versionen ab Gradle 5.0 und kann über das Plug-in-Portal von Gradle mit der ID org.gradle.test-retry bezogen werden.

Weitere Informationen gibt es auf der GitHub-Seite des Projektes sowie auf dem Blog von Gradle.

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: