© istockphoto.com/antishock
PHP Magazin
End-to-End-Tests für AngularJS mit Protractor

End-to-End

AngularJS ist gut zu testen, das ist mittlerweile bekannt. Und auch, dass es eine hervorragende Infrastruktur zur Formulierung von Unit Tests gibt. Jedoch sind Unit Tests nur die halbe Miete zur Absicherung von Applikationen, und aus diesem Grund beschäftigt sich dieser Artikel mit einer weiteren Art des Testens von AngularJS-Applikationen: den End-to-End-Tests mit Protractor.

Sebastian Springer


Wenn Sie sich jetzt die Frage stellen, was genau End-to-End-Tests sind, warum Sie diese überhaupt benötigen und wie sie sich in Ihre Applikation integrieren lassen, dann sind Sie hier genau richtig.

Was ist ein End-to-End-Test?

Ein End-to-End-Test prüft im Gegensatz zum Unit Test nicht nur einen kleinen Ausschnitt Ihrer Applikation, sondern einen kompletten Workflow oder eine in sich geschlossene Funktionalität. Damit ersetzen sie keinesfalls Unit Tests, sondern bilden lediglich eine zusätzliche Ebene der Qualitätssicherung und sollen manuelle Tests von Funktionen in einer Applikation ersetzen.

Diese manuellen Tests sind lediglich bei kleinen Applikationen mit einem geringen Funktionsumfang praktikabel. Wächst allerdings der Funktionsumfang, können die Features nicht mehr in akzeptabler Zeit von Hand getestet werden. In diesem Fall beschränken sich viele Entwickler und Tester darauf, nur modifizierte Bereiche einer Applikation zu prüfen, was allerdings schwerwiegende Konsequenzen nach sich ziehen kann, wenn sich eine Codeänderung auf andere Bereiche der Applikation auswirkt, die nicht offensichtlich sind. Die ersten guten Gründe für End-to-End-Tests sind also Zeitersparnis beim Testen von Features und Sicherheit, wenn es um die Funktionstüchtigkeit von Teilen der Applikation geht.

Ein weiterer Aspekt, der für End-to-End-Tests spricht, ist, dass sie nicht so nah am Quellcode der Applikation angesiedelt sind wie Unit Tests. Ein klassischer Unit Test sichert eine Funktion oder eine bestimmte Komponente einer Applikation ab. Das bedeutet, dass Sie hier schon in der Struktur des Quellcodes stecken. Ein End-to-End-Test ist ein Blackbox-Test – hier interessiert es Sie nicht, wie der Quellcode strukturiert ist oder welche Funktionen oder Services es gibt. Es ist nur relevant, ob ein bestimmtes Feature funktioniert; und zwar einmal quer durch die Applikation vom Frontend bis zum Server. Mit dem Fokus auf der Funktionalität der Applikation gleichen die End-to-End-Tests eine entscheidende Schwachstelle von Unit Tests aus – Unit Tests prüfen nur einzelne Komponenten, nicht aber ihr Zusammenspiel in der Applikation und genau das steht bei den End-to-End-Tests im Mittelpunkt. So können sie helfen, Fehler aufzudecken, die bei der Integration von Codefragmenten auftreten.

Den bereits erwähnten Vorteilen stehen einige Nachteile von End-to-End-Tests gegenüber. Zunächst gilt für diese Art der Tests, was auch für alle anderen Tests gilt: sie kosten. Ein End-to-End-Test muss kon...

PHP Magazin
End-to-End-Tests für AngularJS mit Protractor

End-to-End

AngularJS ist gut zu testen, das ist mittlerweile bekannt. Und auch, dass es eine hervorragende Infrastruktur zur Formulierung von Unit Tests gibt. Jedoch sind Unit Tests nur die halbe Miete zur Absicherung von Applikationen, und aus diesem Grund beschäftigt sich dieser Artikel mit einer weiteren Art des Testens von AngularJS-Applikationen: den End-to-End-Tests mit Protractor.

Sebastian Springer


Wenn Sie sich jetzt die Frage stellen, was genau End-to-End-Tests sind, warum Sie diese überhaupt benötigen und wie sie sich in Ihre Applikation integrieren lassen, dann sind Sie hier genau richtig.

Was ist ein End-to-End-Test?

Ein End-to-End-Test prüft im Gegensatz zum Unit Test nicht nur einen kleinen Ausschnitt Ihrer Applikation, sondern einen kompletten Workflow oder eine in sich geschlossene Funktionalität. Damit ersetzen sie keinesfalls Unit Tests, sondern bilden lediglich eine zusätzliche Ebene der Qualitätssicherung und sollen manuelle Tests von Funktionen in einer Applikation ersetzen.

Diese manuellen Tests sind lediglich bei kleinen Applikationen mit einem geringen Funktionsumfang praktikabel. Wächst allerdings der Funktionsumfang, können die Features nicht mehr in akzeptabler Zeit von Hand getestet werden. In diesem Fall beschränken sich viele Entwickler und Tester darauf, nur modifizierte Bereiche einer Applikation zu prüfen, was allerdings schwerwiegende Konsequenzen nach sich ziehen kann, wenn sich eine Codeänderung auf andere Bereiche der Applikation auswirkt, die nicht offensichtlich sind. Die ersten guten Gründe für End-to-End-Tests sind also Zeitersparnis beim Testen von Features und Sicherheit, wenn es um die Funktionstüchtigkeit von Teilen der Applikation geht.

Ein weiterer Aspekt, der für End-to-End-Tests spricht, ist, dass sie nicht so nah am Quellcode der Applikation angesiedelt sind wie Unit Tests. Ein klassischer Unit Test sichert eine Funktion oder eine bestimmte Komponente einer Applikation ab. Das bedeutet, dass Sie hier schon in der Struktur des Quellcodes stecken. Ein End-to-End-Test ist ein Blackbox-Test – hier interessiert es Sie nicht, wie der Quellcode strukturiert ist oder welche Funktionen oder Services es gibt. Es ist nur relevant, ob ein bestimmtes Feature funktioniert; und zwar einmal quer durch die Applikation vom Frontend bis zum Server. Mit dem Fokus auf der Funktionalität der Applikation gleichen die End-to-End-Tests eine entscheidende Schwachstelle von Unit Tests aus – Unit Tests prüfen nur einzelne Komponenten, nicht aber ihr Zusammenspiel in der Applikation und genau das steht bei den End-to-End-Tests im Mittelpunkt. So können sie helfen, Fehler aufzudecken, die bei der Integration von Codefragmenten auftreten.

Den bereits erwähnten Vorteilen stehen einige Nachteile von End-to-End-Tests gegenüber. Zunächst gilt für diese Art der Tests, was auch für alle anderen Tests gilt: sie kosten. Ein End-to-End-Test muss kon...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang