Burger Menü
UAT und E2E: Automatisierte UI TestsPfeil zurück

UAT und E2E: Automatisierte UI Tests

Stefan
Stefan
Juli 2021
App Entwicklung

Sich Klick für Klick nach jedem Update durch eine Anwendung durch zu testen, dass ist zeitaufwendig und langweilig. Doch wenn es um die Implementierung eines soliden Software-Qualitätssicherung-Ansatzes geht, gibt es wahrscheinlich nichts Wichtigeres als Softwaretests.

Das Problem ist: Kontrolle muss sein, vorallem wenn der Qualitätsanspruch entsprechend hoch ist, doch gibt es hierfür keine effizienteren Methoden?

Unit- und Integrationstests?

Ein mündiger Quality-Assurance Experte mag nun in den Raum werfen, dass es doch genau dafür schon Unit- und Integration-Tests gibt. Diese testen einzelne Komponenten oder Subsysteme von Software automatisch, mit unterschiedlichen Eingaben, auf die richtigen Ausgaben.

Problematisch ist hier, dass sie meistens nur im Backend Verwendung finden und das große Ganze vernachlässigen, da Komponenten wie die Datenbank künstlich erzeugt werden, um Seiteneffekte zu vermeiden. Diese Tests sind zwar wichtig, um Fehler zu vermeiden und die Funktionalität zu gewährleisten, aber sie decken eben besonders in Web Apps viele Problemzonen nicht ab.


UAT und E2E-Tests

Aus diesem Grund bieten sich sogenannte User Acceptance Tests (UAT) an, die, wie der Name schon verrät, Apps aus Nutzersicht testen. Sie sind sehr einfach zu definieren und werden im Fall von Web Apps direkt im Browser ausgeführt. Das hat gleich mehrere Vorteile:


  • der Front-end-Code wird getestet und das optional sogar mit verschiedenen Browsern,
  • Product Manager oder Kunden können so bereits Anforderungen definieren und Tests selbst schreiben und
  • das komplette System wird getestet, weil eine realitätsnahe Umgebung erstellt wird.


Einen ähnlichen Ansatz verfolgen End-to-End-Tests (E2E), welche sehr ähnlich funktionieren, wobei aber die Definition der Tests eher aus Entwickler- anstatt aus Nutzersicht erfolgt.

Im Allgemeinen wird für einen Test im Hintergrund ein Browserfenster geöffnet und eine Reihe von einfachen Schritten ausgeführt. Am Ende wird anhand von einer oder mehreren Bedingungen entschieden, ob der Test ein Erfolg ist oder fehlschlagen soll.

Ein Test kann so aussehen:

Testen, ob Login mit korrekten Nutzerdaten erfolgreich ist

  1. "Test" als Nutzername eingeben
  2. "123" als Passwort eingeben
  3. auf "Login" klicken
  4. "Anmeldung erfolgreich" auf Seite vorhanden?

Tools

Es gibt verschiedene Tools für die Ausführung und Definition von UA- und E2E-Tests. APIs wie Codecept oder Codeception lassen sich gut in den Workflow von Entwicklern integrieren.

Codeception: Tool für UA- & E2E Tests
Codeception

Software mit graphischer Schnittstelle wie Selenium IDE ist dafür benutzerfreundlicher, vor allem für Laien oder halt auch mündige Quality-Assurance Experten.

Selenium IDE: Tool für UA- & E2E Tests
Selenium IDE

Containerisierung mit Docker

Für User Acceptance Tests und End-to-End-Tests ist es notwendig bei jedem Durchlauf eine frische und realitätsnahe Umgebung zu erstellen, damit Tests immer unter den selben Voraussetzungen ausgeführt werden.

Das ist besonders dann schwierig, wenn das System aus vielen Komponenten (API, Datenbank, Redis, Messaging Queues) besteht. Mit Docker steht uns jedoch ein Werkzeug zur Verfügung, mit welchem sich dieser Vorgang vereinfachen lässt. Mit Docker können wir für einzelne Komponenten sogenannte Container konfigurieren, die dann beliebig oft in verschiedenen Konstellationen erstellt werden können, sodass uns immer eine optimale Umgebung zum Testen zur Verfügung steht.

Ein weiterer Vorteil ist, dass dadurch Tests parallel ausgeführt werden und somit schneller ein Ergebnis liefern können. Genauer erklärt wird das zum Beispiel in der Dokumentation von Codeception.

Integration in CI/CD

Wie nützlich Continuous Integration (CI) und Continuous Delivery (CD) ist hatten wir bereits erläutert. Umso nützlicher wird es, wenn wir unsere automatisierten Tests in die Pipeline integrieren und so dafür sorgen, dass sie vor jedem Release oder nach jeder Code-Änderung automatisch ausgeführt werden.

Beispiel für CD Pipeline mit User Acceptance Tests
Beispiel für CD Pipeline mit User Acceptance Tests

Es gab einen Fehler in den Tests? Dann können wir uns den Testbericht mit Screenshots aus der App anzeigen lassen und den Fehler beheben. Wenn alles brav durchläuft, wird die App ohne allzu große Sorgen aktualisiert.

Fazit

UA- und E2E-Tests sind eine effiziente Möglichkeit, Qualitätssicherung bei Web Apps zu betreiben. Sie lassen sich schnell definieren und sind besonders dann einfach durchzuführen, wenn das System mit Containern reproduzierbar ist.

Ist das jedoch nicht gegeben oder beeinflussen sich Tests oft gegenseitig, wird es bei einer größeren Anzahl komplizierter. Der Vorteil bei UAT und E2E, dass Seiteneffekte nicht ausgeschlossen werden, kann dann auch zum Nachteil werden.

Außerdem sollte auch nicht komplett auf ein Pferd gesetzt werden. Manuelle Tests sind in regelmäßigen Abständen weiterhin genauso sinnvoll wie Unit- und Integrationstest.

Und dann kann auch hoffentlich nichts mehr schiefgehen...