Continuous Integration

Builds scheitern am Test – und das ist gut so

Melanie Feldmann

© Shutterstoc.com / MicroOne

Forscher der Universitäten Delft und Radboud haben untersucht, wie das Continuous Integration Tool Travis CI in der Open Source Community genutzt wird, warum Builds brechen und ob das Zusammenspiel verschiedener Integrationsumgebungen unentdeckte Fehler sichtbar macht. Sie fanden heraus, dass Builds am häufigsten an Test scheitern. Was sie ja auch durchaus sollen.

Um einen Überblick über die Nutzung von Travis CI und Build-Prozesse zu erhalten haben die Forscher 2.640.825 Java und Ruby Builds von GitHub und ihre Logs untersucht. Das komplette Datenset steht unter dem Namen TravisTorrent frei zur Verfügung. Ziel der Forschung war es, den Build-Prozess besser zu verstehen, denn bisher fehlten empirische Aussagen gerade zu der Testphase von Build-Prozessen.

Wie verbreitet ist Travis CI?

Um herauszufinden wie weit verbreitet Travis CI auf GitHub ist, untersuchten die Forscher 58.031 aktive Projekte, die keine Hobby- und Bastelprojekte sind oder Forks. Jedes der Projekte hatte mehr als 50 Sterne und war in einer der 19 populärsten Sprachen von GitHub geschrieben. 16.159 Projekte der Stichprobe nutzen Travis CI in mindestens einem Build. Das sind 27,8 Prozent. Dabei stießen die Forscher auch auf Projekte, die in Sprachen geschrieben sind, die Travis CI gar nicht unterstützt. Das spricht dafür, dass es durchaus vorkommen darf eine zweite Sprache nur für den Build-Prozess zu benutzen. Die Forscher fanden auch heraus, dass es egal ist, welche Programmiersprache genutzt wird. Die Nutzung war über die verschiedenen Sprachtypen ähnlich verteilt.

Warum brechen Builds?

Wenn Builds brechen kann das verschiedene Gründe haben. Es kann ein Kompilierfehler sein oder ein Test schlägt fehl. Die Forscher wollten herausfinden was genau die häufigste Ursache für gebrochene Builds ist: Und das waren nicht bestandene Tests. Nur ein kleiner Anteil an Abbrüchen wurde von den Nutzern direkt ausgelöst. Auch Infrastrukturprobleme traten im Verhältnis seltener auf. Außerdem deckten die Forscher auf, dass es bei dynamischen Sprachen wie Ruby deutlich häufiger vorkommt, dass Builds aufgrund des Tests brechen, als es zum Beispiel bei Java der Fall ist. Dies könne an der Art der Sprache selbst liegen. Es würde aber deutlich machen wie wichtig Tests gerade für dynamische Sprachen seien.

Wenn Builds am Test scheitern, macht der Test genau das, was er soll: Fehler aufdecken bevor sie in Produktion Probleme verursachen. Das Ergebnis der Forscher ist also kein überraschendes, sondern eines, dass gängige Praxis bestätigt.

Verschiedene Integrationsumgebungen nutzen ein wenig

Wenn verschiedene Integrationsumgebungen zum Einsatz kommen sei es wahrscheinlicher Fehler zu finden, die sonst unentdeckt geblieben wären. Bei 10 Prozent der Builds kamen so neue Fehler zum Vorschein. Hier zeigten sich jedoch deutliche Unterschiede bei den verschiedenen Sprachen. Deswegen raten die Forscher, verschiedene Integrationsumgebungen vor allem bei Sprachen zu nutzen, die ein sehr diverses Ökosystem aufweisen und bei denen verschiedene Build-Konfigurationen zum Einsatz kommen können.

Was heißt das für mich?

Entwicklern geben die Forscher den Rat mit auf den Weg Tests als integralen Bestandteil des CI-Prozesses anzusehen. Denn 31 Prozent der untersuchten Java-Projekte nutzen die Testphase von Travis CI nicht, obwohl eine der Hauptgründe für CI automatisiertes Testen ist. Außerdem raten die Forscher davon ab, lokales Testen vollkommen durch Tests im Build-Prozess zu ersetzen. In der Praxis sei dies auch nicht zu beobachten, da die niedrige Rate an Fehlern darauf hindeutet, dass Entwickler ihren Code vorab testen. Jedoch sollten Entwickler nicht den Fehler begehen, Projekte mit einer niedrigeren Rate an gebrochenen Builds als qualitativ besser einzustufen. Vor allem für Projekte in unterschiedlichen Sprachen sei dies kein valider Vergleich.

Eine Vorab-Version des kompletten Papers „Oops, my tests broke the build: An analysis of Travis CI builds with GitHub“ von Moritz Beller, Georgios Gousios und Andy Zaidman steht online zum Lesen bereit.

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: