Blog

Superschnelle Ausführung von Unit-Tests mit WallabyJS

Frank van Wijk

Frank van Wijk

Aktualisiert Oktober 22, 2025
3 Minuten

Unser aktuelles AngularJS-Projekt befindet sich seit etwa 2,5 Jahren in der Entwicklung, so dass die Anzahl der Unit-Tests enorm gestiegen ist. Wir neigen dazu, einen Abdeckungsgrad von nahezu 100% zu haben, was zu mehr als 4000 Unit-Tests geführt hat. Dazu gehören auch Service-Specs und View-Specs. Sie wissen vielleicht, dass AngularJS - wenn es ein wenig missbraucht wird - nicht für supergroße Anwendungen geeignet ist, aber da wir das Biest gezähmt haben und eine Anwendung mit mehr als 16.000 Zeilen hochleistungsfähigem AngularJS-Code haben, wollen wir die Kontrolle über den gesamten Entwicklungsprozess ohne Leistungseinbußen behalten.

Wir verwenden Karma Runner mit Jasmine, was für eine kleine Anzahl von Specs und zum Debuggen in Ordnung ist, aber die Ausführung der gesamten Testsuite dauert bis zu 3 Minuten auf einem 2.8Ghz MacBook Pro. Da wir unseren Code kontinuierlich testen, haben wir eine Lösung gefunden, um alle Unit-Tests in mehrere Shards aufzuteilen. Diese parallele Ausführung der Unit-Tests hat die Ausführungszeit erheblich verkürzt. Über die Details dieser Karma-Parallelisierung werden wir später in diesem Blog schreiben. Sharding hat uns sehr geholfen, wenn wir die gesamte Unit-Test-Suite ausführen wollen, d.h. wenn wir sie im Pre-Push-Hook verwenden, aber während der Entwicklung schnelle Rückmeldungen über die Abdeckung und fehlgeschlagene Specs (rot-grüne Tests) wünschen. Bei einem so langen Unit-Test-Zyklus, selbst wenn er parallel läuft, beschreiben viele unserer Entwickler die Specs, an denen sie arbeiten, so dass die Rückmeldung sofort erfolgt. Dies ist jedoch recht arbeitsintensiv und manchmal wird ein fdescribe versehentlich verschoben.Und dann.... wir WallabyJS entdeckt. Dabei handelt es sich um einen gewöhnlichen Test Runner wie Karma. Selbst die Konfigurationsdatei ist fast eine Kopie unserer karma.conf.js. Der Unterschied liegt in den Details. Dank der umfangreichen Verwendung von Web Workern führt es die Unit-Test-Suite in 50 Sekunden aus. Dann beginnt der Spaß. [caption id="attachment_16545" align="alignnone" width="550"] Screenshot von Wallaby in Aktion (IntelliJ). Schamlos von wallaby.com geklaut [/caption] Ich verwende Wallaby als IntelliJ IDEA-Plugin, das farbige Anmerkungen am linken Rand meines Codes anbringt. Grüne Quadrate zeigen abgedeckte Zeilen/Anweisungen an, orange zeigt mir teilweise abgedeckten Code an und grau bedeutet "bitte schreiben Sie einen Test für diese Funktionalität oder ich führe schwer zu findende Fehler ein". Farbenblinde Menschen sehen nur kohlgrüne Quadrate in jeder Zeile, da die Standardfarben nicht sehr gut gewählt sind, aber diese Farben lassen sich über das Menü Einstellungen anpassen.Wenn Sie auf ein Quadrat klicken, öffnet sich ein Feld mit einer Liste von Tests, die die Abdeckung bewirken. Wenn der Test fehlgeschlagen ist, wird mir auch mitgeteilt, warum. [caption id="attachment_16544" align="alignnone" width="550"]Dialog Ein Dialogfeld mit Kontextinformationen (wallaby.com)[/caption] Da die Implementierung und die Tests jetzt instrumentiert sind, geht das Auffinden von Fehlern und das Erhöhen der Abdeckung viel schneller. Außerdem müssen Sie sich nicht mehr mit fdescribesund fitsherumschlagen, um einzelne Tests während der Entwicklung auszuführen. Dank der Instrumentierung führt Wallaby Ihre Tests kontinuierlich aus und lässt nur die relevanten Tests für die Teile, an denen Sie arbeiten, erneut laufen. In Echtzeit.

Verfasst von

Frank van Wijk

Frank is a senior frontend consultant focusing on quality and maintainability.

Contact

Let’s discuss how we can support your journey.