Sebastian Springer MaibornWolff

Leider werden viele Angular-Applikationen nicht oder nur unzureichend getestet. Dabei muss das Erzeugen von Tests keineswegs eine Strafaufgabe sein!

Tests schaffen Sicherheit, dokumentieren und regen zum Nachdenken an. Das gilt vor allem, wenn Sie im Team über längere Zeit an einer Applikation arbeiten. Mit Angular als Framework für Ihre Applikation sind Sie jedoch auch für diese Herausforderung bestens gewappnet. Dabei setzt Angular auf verbreitete Standards und Bibliotheken und erweitert sie um frameworkspezifische Details, um Ihnen das Testen Ihrer Applikation so einfach wie möglich zu gestalten.

Leider werden viele Angular-Applikationen nicht oder nur unzureichend getestet. Das liegt zum einen an der Bequemlichkeit der Entwickler, zum anderen aber auch an einer gewissen Einstiegshürde. In diesem Artikel möchte ich Ihnen zeigen, wie Sie die Werkzeuge, die Ihnen Angular bietet, benutzen können, um Ihre Applikation abzusichern. Dabei werden Sie sehen, dass das Erzeugen von Tests keineswegs eine Strafaufgabe sein muss.

Grundlagen

Beim Thema Tests stolpern Sie recht schnell über das Konzept der Testpyramide. Das Konzept besagt, dass es verschiedene Arten von Tests gibt, und dass Sie unterschiedlich viele Tests pro Kategorie benötigen. Die Basis der Testpyramide bilden Unit-Tests, die zahlenmäßig die meisten Tests stellen. Sie werden während der Entwicklung sehr häufig ausgeführt und sollten aus diesem Grund sehr wenig Laufzeit benötigen. Unit-Tests prüfen nur einzelne Codestücke, in den meisten Fällen handelt es sich dabei um Funktionen. Die nächsten beiden Ebenen, die Integrations- und Akzeptanztests, testen nicht mehr nur einzelne, unabhängige Codefragmente, sondern größere Einheiten bis hin zur grafischen Oberfläche. Die Anzahl dieser Tests ist wesentlich geringer als die der Unit-Tests, allerdings ist die Laufzeit auch wesentlich länger, da die Tests das gesamte System einbeziehen.

Bei Angular-Applikationen unterscheidet man, ähnlich wie bei der Testpyramide, zwischen zwei Kategorien von Tests: Unit-Tests und End-to-End-Tests. Diese Unterscheidung wird nötig, da sie auf unterschiedliche Technologien setzen: Unit-Tests werden auf Basis von Jasmine und Karma entwickelt, End-to-End-Tests – auch kurz E2E-Tests – verwenden dagegen Protractor. In welchen Fällen setzen Sie nun auf Unit-Tests, und wann sollten Sie lieber einen E2E-Test erstellen? Wenn Sie tiefer in das Thema Testing eintauchen, werden Sie schnell merken, dass gerade Benutzerinteraktionen und Workflows recht umständlich mit Unit-Tests abzudecken sind. Das ist der klassische Anwendungsfall für E2E-Tests: Eine Tastatureingabe, ein Klick auf einen Button und dann warten, dass die Applikation mit der korrekten Ausgabe reagiert. Mit Unit-Tests dagegen sichern Sie einzelne Methoden ab: Liefert das Observable bei einer bestimmten Wertekonstellation eines injizierten Service die korrekten Werte, und wird bei einer Fehleingabe die korrekte Exception ausgelöst? All das sind Dinge, die Sie mit Unit-Tests abdecken.

Den vollständigen Artikel lesen Sie in der Ausgabe:

PHP Magazin 3.17 - "Plates"

Alle Infos zum Heft
579781249Angular-Testing: Unit-Tests und E2E-Tests mit Angular
X
- Gib Deinen Standort ein -
- or -