End-to-End-Testing

End-to-End-Tests sind eine klassische Methode der Softwarequalitätssicherung, um fachliche Geschäftsabläufe zu prüfen. Im Vergleich zu Unit-Tests und Integrationstest werden dabei nicht nur kleine Codeabschnitte oder konkrete Schnittstellen getestet. Der E2E-Test nimmt mehrere Teile des Systems unter die Lupe. Dabei sind in der Regel Frontend, Backend, Datenbanken und APIs im Spiel. 

Häufig werden E2E-Tests auf Basis der zu Beginn des Projektes festgelegten Anforderungen des Kunden entwickelt. Der E2E-Test soll eine reale Benutzerinteraktion von Anfang bis Ende nachstellen und prüfen, ob die Software den Kundenerwartungen entspricht. Häufig wird diese Testart deshalb auch als Akzeptanz- oder Abnahmetest bezeichnet. In der Testpyramide sind sie auf oberster Ebene angeordnet.

Ziele des E2E-Testings und ein exemplarischer E2E-Test

E2E-Tests (Abnahmetests) sind auf der Testpyramide nach Mike Kohn auf oberster Ebene angeordnet.

Bei der Ausführung eines E2E-Tests wird validiert, ob die Software innerhalb eines Worksflows mit allen Subsystemen korrekt zusammenarbeitet. Dabei wird nicht nur die Interaktion zwischen den Softwarekomponenten der zu prüfenden Anwendung getestet, auch externe Services und die Datenkonsistenz entlang des gesamten Arbeitsablaufes sind von Relevanz. 

Angenommen, die Website eines Kino-Betreibers soll einem End-to-End-Test unterzogen werden. Ein automatisierter Testablauf könnte wie folgt aussehen:

  • Benutzer unter 18 Jahre loggt sich auf der Website ein (Prüfung externer Service, z.B. der Schnittstelle zur Benutzerdatenbank und Authentifizierungsdienst)
  • Er sucht nach einem konkreten Film  (Prüfung externer Service, z.B. API, um an Filmdaten zu gelangen)
  • Er versucht, den neu erschienen Film „Nightmare on Elm Street 12“ dem Warenkorb hinzuzufügen (Prüfung externer Service, z.B. Schnittstelle zur externen Jugendschutz-Datenbank)
  • Es erscheint eine Hinweismeldung, dass er aufgrund seines Alters für diesen Film keine Tickets kaufen könne.
  • Der Warenkorb bleibt weiterhin leer.
  • Der Kunde wählt einen anderen Film und fügt zwei Tickets hinzu (Prüfung externer Service, z.B. API zum Hinzufügen der Tickets im Warenkorb)
  • Warenkorb füllt sich und Tickets können gekauft werden (Prüfung externer Service, z.B. Interaktion mit Zahlungsdienstleister)

Welche Tools und Technologien für E2E-Tests?

E2E-Testfälle lassen sich gut automatisieren und gehören zu den typischen Aufgaben eines Testingenieurs. Einige bewährte Tools dafür sind:

  • Postman für die Prüfung von APIs
  • Selenium, Playwright oder Cypress für Oberflächentests
  • Appium als Branchenstandard für mobiles Testing 
  • Allure für umfangreiche Reports 

Darum sind E2E Tests essenziell im Software Testing

  • Da sie Workflows nachstellen, werden viele Komponenten der Anwendung abgedeckt, so bieten E2E-Tests eine hohe Testabdeckung.
  • Können als Regressionstests dienen, um zu validieren, dass Codeänderungen keine neuen Fehler an anderer Stelle nach sich ziehen.
  • Simulieren vollständige Nutzerinteraktionen in der Anwendung und können zum Abgleich mit den definierten Kundenanforderungen genutzt werden.

Hürden beim E2E-Testing

  • Im Vergleich zu Unit-Tests sind E2E-Tests häufig mit größerem Wartungsaufwand verbunden, vor allem wenn größere Änderungen im Front- und Backend vorgenommen werden. Auch setzen sie eine stabile Testumgebung voraus. 
  • Für agile Softwareentwicklungsprojekte reichen E2E-Tests nicht aus, sie sollten ergänzend zu Unit- und Integrationstests verwendet werden. 
  • Aufgrund ihrer Komplexität führen sie häufig zu unerwünschten Nebeneffekten und sogenannten Flaky-Tests.
  • Da verschiedene Subsysteme validiert werden, sind häufig umfangreiche Testdaten-Sets erforderlich.

Tipps für das Handling von E2E-Tests

  • Bei vielen, komplexen Testfällen eignet sich eine parallele Ausführung, um die Test-Execution-Time zu reduzieren.
  • E2E-Tests sollten durchdacht und nur in begrenztem Umfang erstellt werden, viele Komponenten können bereits mit einfachen Integrationstests geprüft werden.
  • E2E-Tests dürfen nicht durch kleine Anpassung im Frontend abbrechen, daher sollten von Beginn stabile CSS- oder XPath-Selektoren bestimmt werden.
  • Nicht immer sind externe APIs erreichbar, hierfür können Mocking-Systeme (z.B. von Postman) genutzt werden.

Abschließende Worte 

E2E-Tests sind ein bewährtes Mittel, um echte Nutzeraktionen zu simulieren. Darüber hinaus können sie gut als automatisierte Regressionstests fungieren. Sie unterstützten, die gesamte Anwendung aus Benutzersicht zu validieren, sollten jedoch aufgrund ihrer Komplexität selektiv ausgewählt werden.

Zum Verständnis der unterschiedlichen Testarten empfehle ich auch folgenden Artikel: Testpyramide. 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.