„YATE ist gelöscht!“
Der Anlass dieses Blogposts ist die im November 2020 vollzogene endgültige Löschung unsere hauseigenen End-2-End-Testing Frameworks „YATE“. Alle Referenzen in Code und Dokumentation sind weg und kein Engineer muss sich je wieder damit befassen. Damit endete eine bewegte Geschichte, die wir hier kurz beleuchten möchten.
Das Framework „YATE“
„Yet Another Test Environment“ und die darauf basierenden (UI-)Tests wurden um 2016 von einem externen Entwicklerteam geschrieben, um den manuellen Regressionstest unseres Bestandssystems (liebevoll „Der Monolith“ genannt) abzulösen. An sich eine sehr gute Idee, denn bis 2019 wurden die meisten Änderungen am Monolithen nur einmal im Monat ausgerollt, da der dafür nötige manuelle Regressionstest zwei Tage mit ca. 10 Leuten dauerte. Nicht so toll war, dass die volle Testsuite über drei Stunden lief, maximal einmal pro Jahr alle Tests grün waren und das lokale Ausführen der Tests u.a. aufgrund von Abhängigkeiten zum Monolith-Code so kompliziert war, dass selbst den größten Testing-Enthusiasten unter uns die Lust am Testen vergangen ist.
Mit viel Einsatz haben wir die wichtigsten YATE-Tests soweit fit gemacht, dass sie als automatisierte Regressionstests für den wöchentlichen Monolithen-Release ab Mitte 2019 genutzt werden konnten. Etwas später haben wir dann beschlossen, dass es sinnlos ist, noch mehr Zeit in YATE zu stecken. Wir haben viele Tests gelöscht und die relevanten teilweise mit TestCafé neu geschrieben und teilweise in ein schlankes Selenium-Repository umgezogen. Direkte Zugriffe auf die Datenbank und Code-Abhängigkeiten zum Monolith haben wir gekappt. Die Laufzeit beträgt durch parallele Ausführung jetzt nur mehr 20 Minuten. Die lokale Ausführung der Tests haben inzwischen schon viele Engineers schnell aufsetzen können.
Lessons learned
- Ownership ist der Schlüssel: YATE wurde in einem abgeschotteten Team entwickelt und erst die Aufteilung der Zuständigkeiten für den Monolithen auf die Teams und damit auch der Tests sorgte dafür, dass sie gewartet und benutzt werden konnten.
- Nur einfach benutzbare Tests sind gute Tests.
- Die „Sunk Cost Fallacy“ kennt jeder, aber wenn man mittendrin steckt ist es doch schwer, darüber hinwegzukommen. Zitat: „YATE hat so viel wie ein Einfamilienhaus gekostet, da können wir doch nicht…“
- Mut zum Löschen wird belohnt!