Leseproben
Karsten Sitterberg Selbstständig

„Separat zu den oberen Tools sind unten in grün noch einige weitere Hilfsmittel aufgeführt, die wir uns im Verlauf dieser Artikelserie noch anschauen werden. Sie existieren alle, um das Testen zu vereinfachen, oder sind, wie im Fall des CI-Servers, sogar notwendig für eine automatisierte Ausführung der Tests. Darüber hinaus sind die Tools nicht nur beim Testen von Frontends interessant.“

Test-driven Development ist keine Mode, sondern professionelle Entwicklung. Anders als der Zuckerguss einer Torte ist „Qualität“ auch kein Attribut, das nachträglich ergänzt werden kann, sondern muss von Anfang an berücksichtigt werden. Diese Artikelserie soll einen Überblick über die zum Erreichen dieser Qualität nötigen Testing-Methoden und -Technologien geben.

Wir werden uns im Wesentlichen die Situation bei Anwendungen mit einem SPA-Frontend anschauen, aber auch herkömmliche, serverseitig gerenderte Anwendungen kommen nicht zu kurz. Im vorliegenden ersten Teil werden wir das Vorgehen von testgetriebener Softwareentwicklung motivieren und uns dann einen Überblick über die zur Verfügung stehenden, aktuellen Werkzeuge verschaffen. Im zweiten Teil werden wir einige der Werkzeuge aus dem ersten Artikel im Detail kennenlernen, mit denen wir dann Unit-Tests für eine Beispielanwendung bauen. Im dritten Teil wird es hauptsächlich um Ende-zu-Ende bzw. Integrationstests gehen, wobei auch hier die Herausforderung darin liegt, eine entsprechende Testbarkeit herzustellen. Im vierten Teil werden speziellere Testing-Ansätze vorgestellt, beispielsweise Visual Regression Testing und Tests auf mobilen Geräten im iOS- bzw. Android-Browser.

Diese Artikelserie richtet sich an alle Java-Entwickler, die klassische Webanwendungen oder auch Anwendungen mit einem Single Page Application Frontend (im Folgenden Browseranwendungen genannt) entwickeln. Es werden verschiedene moderne Testframeworks unter anderem anhand von Quellcodebeispielen erläutert. Ziel ist, dass jeder Entwickler die diversen Frameworks einordnen kann und ein Gefühl dafür bekommt, wie der Einsatz der Frameworks in der Praxis aussehen kann.

Automatisierte Testinfrastruktur

Viele Entwickler stellen sich die Frage, warum sie Zeit in automatisierte Testinfrastruktur stecken sollen. Schließlich müssen die Tests nicht nur geschrieben, sondern auch gewartet werden. Für die Antwort muss man ein wenig ausholen.

An jede Anwendung werden gewisse zu erreichende Qualitätsziele, sowohl während der Entwicklung als auch in Produktion, gestellt. Eine Anwendung soll etwa fehlerfrei arbeiten, dabei für alle Entwickler gut verständlich sein, sich durch hohe Entwicklerproduktivität auszeichnen, um neue Features erweiterbar sein und – sofern es sich nicht um einen Prototyp handelt – eine langfristige Wartbarkeit sicherstellen. Um diese Qualitätsziele zu erreichen, muss ein gewisses initiales Investment getätigt werden: Zerlegung und Transformation des Problems in ein Anwendungsdesign, Auswahl des richtigen API und der zu verwendenden Technologien. Parallel dazu wird die Entwicklungsinfrastruktur aufgebaut, zum Beispiel Build Pipeline, SCM und Ticketsystem. Um die oben genannten Qualitätsziele zu erreichen, hat sich als Entwicklungsprozess das Test-driven Development inklusive Code-Reviews und Pair Programming bewährt. Dieses Investment zahlt sich erfahrungsgemäß recht schnell und schon bei kleinen Projekten aus. Martin Fowler hat sich dazu ebenfalls geäußert und geht in seinem Artikel „Is High Quality Software Worth the Cost?“ von Wochen aus. Besonders die Vorteile von automatisierten Tests zeigen sich schnell, da damit ma- nueller Aufwand eingespart wird und Tests frühzeitig verborgene und unerwünschte (Laufzeit-)Fehler zum Vorschein bringen können.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 9.19 - "Ass im Ärmel?"

Alle Infos zum Heft
579901169Testing-Methoden und -Technologien im Überblick
X
- Gib Deinen Standort ein -
- or -