End-to-End-Tests (E2E-Tests) sind eine Software-Testmethode, mit der der gesamte Workflow einer Anwendung von Anfang bis Ende validiert wird.
E2E-Tests bestätigen, dass integrierte Komponenten (wie Frontend, Backend, Datenbanken und Services von Drittanbietern) reibungslos zusammenarbeiten. Außerdem ist es bestrebt, reale Benutzerszenarien einzubeziehen.
Es gibt jetzt eine ganze Reihe von Software-Testtypen. Sie können bestimmte Bereiche einer gesamten Anwendung testen, indem Sie auf den jeweiligen Aspekt, der von Interesse ist, heranzoomen, bis hin zum Komponententest auf der kleinsten inkrementellen Ebene. Vielleicht möchten Sie testen, wie gut die Software verschiedene spezifische Funktionen ausführt oder wie ihre verschiedenen Komponenten zusammenpassen. In diesem Fall sollten Sie Functional Testing oder Integration Testing erkunden.
Angenommen, Ihr Ziel ist es, ein möglichst vollständiges Bild davon zu erhalten, wie eine Softwareanwendung funktioniert. Sie möchten die Anwendung in der Praxis beobachten – vom Start bis zum Ende – und feststellen, wie effizient sie ihre Subsysteme und die damit verbundenen Abhängigkeiten verwaltet.
Darüber hinaus möchten Sie möglicherweise auch einen allgemeinen Eindruck davon gewinnen, wie gut die Benutzeroberfläche (UI) funktioniert. Unabhängig davon, für welchen Ansatz zum Testen der Benutzeroberfläche Sie sich entscheiden, muss dieser die Leistung der Anwendung aus Sicht des Benutzers berücksichtigen.
E2E-Tests bieten ein umfassendes Framework, das einen vollständigen Überblick über das Verhalten der Anwendung ermöglicht und eine Bewertung der Qualität der User Experience (UX) ermöglicht.
Da E2E-Tests so anspruchsvoll sind, dass sie den gesamten Lebenszyklus der Anwendungsentwicklung abdecken, ist es nicht überraschend, dass E2E-Tests mehr Engagement, Ressourcen und Zeit erfordern.
Die E2E-Prüfung unterscheidet sich erheblich von einer „Blackbox“-Teststrategie, bei der der Betrieb auf eine „bestanden/nicht bestanden“-Bewertung reduziert wird. Diese Strategie bedeutet, dass wir nur herausfinden, ob die Anwendung wie abgerechnet funktioniert. Aus diesem Grund ist E2E nicht für jeden Zweck die ideale Wahl. Es handelt sich in der Regel um einen zeitaufwändigen Testprozess, der am besten in Situationen eingesetzt wird, in denen Tester wirklich eine Bewertung jeder einzelnen Stufe der App-Leistung benötigen.
Branchen-Newsletter
Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und mehr auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.
Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.
Der E2E-Testprozess basiert auf folgenden Schritten:
Der Prozess beginnt damit, dass die Tester sich Gedanken darüber machen, wie die Anwendung von echten Benutzern bedient werden wird. In dieser Phase werden die wichtigsten Benutzerinteraktionen der App sowie die Workflows innerhalb der App berücksichtigt.
Die verschiedenen Testszenarien sollten eine angemessene Auswahl realer Szenarien und Benutzerabläufe widerspiegeln, und die Tester sollten diese Szenarien dokumentieren und die verschiedenen Schritte, die jeweils erforderlich sind, grafisch darstellen.
Tester benötigen auch ein Testmanagementsystem, damit Testfälle organisiert und leicht zugänglich aufbewahrt werden können. Testsuiten erfüllen diese Funktion, indem sie Testfälle nach Benutzerpfaden, bestimmten Funktionen oder Modulen und Komponenten gruppieren.
Diese Phase betrifft die Testumgebung und ist ein weiterer Schritt, der eine gewisse Vorausplanung erfordert. Idealerweise sollten Tester eine Testumgebung entwickeln, die der Produktionsumgebung stark ähnelt.
Tester füllen diese Staging-Umgebung mit den einzelnen Komponenten, die normalerweise in den Softwareentwicklungsprozess integriert werden, wie beispielsweise Programmierschnittstellen (APIs), Datenbanken und andere erforderliche Komponenten. Für den Fall, dass keine Zugriffsmöglichkeit auf reale Leistungsdaten besteht, können Tester sich dafür entscheiden, stattdessen synthetische Daten zu verwenden.
Der nächste Aspekt bei der Entwicklung von E2E-Tests ist die Auswahl der geeigneten Tools, insbesondere der erforderlichen Frameworks und Automatisierungstools. Automatisierungstools sind für die Durchführung von E2E-Tests unverzichtbar, da sie den Testprozess optimieren und Tests schneller ausführen. Wenn Tester die Gesamtleistung einer Anwendung bewerten, trägt diese Zeitersparnis zur Effizienz bei.
Welche Tools die Tester genau verwenden, hängt von der Art der Anwendung ab. Tester, die Webanwendungen ausstatten, entscheiden sich in der Regel für Tools wie Cypress oder Selenium. Tester, die mit mobilen Apps arbeiten, entscheiden sich für Tools wie Appium.
Wir sind jetzt in der Phase, in der die Tester die Testskripte formulieren, die verschiedene Anwendungsszenarien für alle zugehörigen Komponenten wie Frontend, Backend, Datenbanken und APIs beschreiben.
Während der Ausführung von E2E-Tests bewerten die Tester das Verhalten der Anwendung im Verlauf eines Workflows und überprüfen, ob die Datenintegrität während der gesamten Testausführung gewährleistet ist. Wenn Tester sich dafür entscheiden, keine Testskripte zu verwenden, müssen sie stattdessen manuelle Tests für Testszenarien durchführen.
Testmethoden sind nur so nützlich wie das, was sie offenbaren, und in dieser Phase ist es an der Zeit, die durch die Tests gewonnenen Daten sorgfältig auszuwerten. Tester vergleichen die Testergebnisse und die damit verbundenen Metriken mit den erwarteten Ergebnissen, um zu sehen, was aus der Testabdeckung gelernt werden kann und welche Mängel oder Fehler derzeit noch im Code vorhanden sind.
Die Tester machen sich nun daran, alle Probleme zu beheben, die beim Testen aufgedeckt wurden. Tester untersuchen Fehlermeldungen und Leistungsprotokolle, um die Ursachen für Fehler zu ermitteln. Wenn Tester Anwendungsprobleme erfolgreich behoben haben, werden die Tests erneut ausgeführt, um zu sehen, ob die Probleme behoben und die Leistung durch den Testprozess optimiert wurde.
In dieser Phase führen die Tester normale Qualitätssicherungsfunktionen (QA) durch, mit dem Ziel, eine nahtlose Datenqualität zu gewährleisten.
Der letzte Schritt des E2E-Testens besteht darin, die Vorteile der Automatisierung zu nutzen und dafür zu sorgen, dass automatisierte Tests ordnungsgemäß als regelmäßig wiederkehrende Aktivität integriert werden. Dies bedeutet, dass Testautomatisierung aus einem Tool wie dem Open-Source-Framework Playwright in die Continuous Integration und Continuous Delivery (CI/CD)-Pipeline integriert wird, damit erforderliche Tests regelmäßig und routinemäßig durchgeführt werden.
Tester, die die CI/CD-Pipeline nutzen, können Leistungsprobleme dann früher im Softwareentwicklungsprozess erkennen, wenn sie diese schnell und einfach beheben können.
Möchten Sie Ihre End-to-End-Testpraktiken perfektionieren? Beachten Sie diese Tipps.
Die User Journeys unterscheiden sich oft erheblich voneinander, und obwohl es wichtig ist, so viele wie möglich in Ihre Tests einzubeziehen, müssen Sie wahrscheinlich Prioritäten setzen. Dieser Ansatz sollte sich darauf konzentrieren, zunächst Ihre wichtigsten User Journeys zu testen.
Wie Sie „wichtig“ definieren, wird etwas variieren. Im Allgemeinen sprechen wir hier jedoch von Tests, die aufgrund ihrer stetigen und anhaltenden Bedeutung für ein Unternehmen regelmäßig durchgeführt werden – wie beispielsweise die Anmeldung auf einer Website.
Der andere Teil dieses Schrittes besteht darin, Workflows in überschaubare Schritte zu Breaks, um das Testen zu vereinfachen.
Selektoren sind Muster, die die reaktiven Elemente innerhalb des Document Object Model (DOM) einer Webseite identifizieren. Selektoren dienen als Adressen, die Test-Frameworks dabei unterstützen, Bildschirmelemente wie Eingabefelder, Textelemente und Schaltflächen zu lokalisieren.
Ebenso ist es am besten, „data-*“-Attribute oder andere stabile Identifikatoren zu verwenden. Fragile Selektoren wie Klassennamen sollten vermieden werden. Darüber hinaus kann eine DOM-Struktur verschiedene Iterationen durchlaufen, daher sollte sie wahrscheinlich mit Bedacht eingesetzt werden.
Was macht einen guten Test aus? Erfolg kann verschiedene Formen annehmen, aber die besten Testbeispiele weisen in der Regel einige gemeinsame Merkmale auf. Zunächst einmal sollten Tester in der Lage sein, denselben Test jederzeit aufzurufen, wenn dies erforderlich ist. Daher ist es wünschenswert, sicherzustellen, dass Tests wiederholbar sind.
Ebenso müssen die Tests frei und ungehindert von externen Einflüssen, wie der Verfügbarkeit von Drittanbietern und Netzwerk-Timing-Problemen, durchgeführt werden können. Diese Probleme können zu unzuverlässigen Ergebnissen führen.
Ohne ein effektives Management zur Eindämmung von Scope Creep können E2E-Tests leicht zu umfangreich werden. In solchen Fällen können Tests verzögert werden und schwierig durchzuführen sein. Die Testleistung wird dadurch entsprechend beeinträchtigt.
Aus diesem Grund ist es sinnvoll, einige der aufwendigsten Verarbeitungsaufgaben nach Möglichkeit auszulagern. Dies betrifft in erster Linie Aktivitäten zur Logiküberprüfung, die Tester im Rahmen von Komponententests und Integration Testing durchführen können. Mit dieser Methode können E2E-Tests weiterhin der Validierung von Benutzerverhaltenstrends und der Synchronisierung von Softwaresystemen gewidmet bleiben.
Das wahrscheinlich Beste, was ein Tester tun kann, um effizientes und umfassendes Testen zu fördern, ist die Nutzung der enormen Rechenleistung, die die Testautomatisierung bietet. Nur so kann sichergestellt werden, dass Tests in angemessenen Abständen durchgeführt werden.
Es ist auch das wichtigste Mittel, um menschliche Fehler in Tests zu begrenzen und repetitive Testaufgaben zu automatisieren. Bei der Arbeit mit browserübergreifenden Anwendungen und mobilen Apps entscheiden sich viele Tester für cloudbasierte Testdienste.
Das Erstellen und Verwalten von Testumgebungen ist ein wesentlicher Bestandteil der Systemtests. Tester sollten die Testumgebung optimieren und so agil wie möglich gestalten, um eine schnelle Einrichtung und sofortige Tests zu ermöglichen.
Es ist auch von entscheidender Bedeutung, dass Testumgebungen eine umfassende Isolierung bieten, um die Testergebnisse vor unzulässigen Störungen durch externe Quellen zu schützen.
E2E-Tests funktionieren am besten, wenn alle beteiligten Parteien mitwirken. Auf diese Weise können Tester hochwertige Testergebnisse nutzen, die sich insbesondere bei Codeüberarbeitungen als wertvoll erweisen. Insbesondere müssen DevOps-Teams und QA-Teams eng miteinander kommunizieren und zusammenarbeiten, um eine optimale Softwarequalität sicherzustellen.
Es ist auch wichtig, QA-Teams zu schulen, damit sie ein klares Verständnis der geschäftlichen Anforderungen des Unternehmens haben und diese bei Überarbeitungen nicht versehentlich beeinträchtigen.
Schließlich sollten alle relevanten Stakeholder über die Projektentwicklungen informiert werden.
Programmierschnittstellen (APIs) sind für die Ausführung von Anwendungen von entscheidender Bedeutung, da sie die Kommunikation zwischen den verschiedenen Komponenten innerhalb einer Anwendung ermöglichen.
API-Tests konzentrieren sich auf die API-Funktionalität und können alle logikbasierten Probleme beseitigen, bevor die Tester die Funktionalität der Benutzeroberfläche bewerten.
Wenn Sie mehrere Tests ausführen, sollten Sie die Multitasking-Fähigkeit Ihres Systems nutzen, indem Sie die Tests parallel ausführen. Diese Methode gilt insbesondere für cloudbasierte Testkonfigurationen, ist aber generell eine gute Richtlinie.
Wenn Sie Tests parallel ausführen, reduzieren Sie den Zeitaufwand für die Testausführung und ermöglichen außerdem ein schnelleres Feedback aus diesen Tests.
Wir werden ständig daran erinnert, dass im Bereich der Computertechnik nur wenig lange unverändert bleibt. Die Dinge ändern sich, Situationen entwickeln sich weiter, und das gilt auch für Anwendungen. Aufgrund dieser ständigen Veränderungen ist die Arbeit von Testern nie vollständig abgeschlossen.
Es ist ratsam, Ihre E2E-Testfälle regelmäßig zu überprüfen und festzustellen, ob sich etwas geändert hat, das sich negativ auf ihre analytische Leistung auswirken könnte.
Künstliche Intelligenz (KI) belebt und revolutioniert fast alle Aspekte der Datenverarbeitung. Für E2E-Tests entsprechen die wichtigsten Nutzen der KI in etwa den Vorteilen, die KI für andere Formen von Softwaretests bietet. Im Grunde sorgt diese KI dafür, dass E2E-Tests schneller ablaufen, den Prozess effizienter machen und Anwendungen besser vor Fehlern schützen.
Darüber hinaus unterstützt KI den E2E-Testprozess durch die Generierung von Testfällen basierend auf Anwendungsverhalten und Benutzerflüssen. Dieser Ansatz umfasst automatische Fehlerbehebung-Tests, die sich aufgrund der Systemerkennung von Benutzeroberflächen-Änderungen selbst korrigieren können.
KI kann Tests in sich weiterentwickelnden Anwendungen überwachen und diese Tests auf der Grundlage von wahrgenommenen wesentlichen Änderungen anpassen. Und wenn es an der Zeit ist, diese Tests durchzuführen, kann KI dies mit extrem hoher Geschwindigkeit tun. Darüber hinaus kann sie Bereiche identifizieren, die möglicherweise zusätzliche Folgeuntersuchungen erfordern.
Für Unternehmen, die hohen Kosten für eine lokale Infrastruktur vermeiden möchten, gibt es KI-gestützte Tests, die in der Cloud ausgeführt werden können. Für Unternehmen, die im Bereich der Software-Veröffentlichung tätig sind, kann KI ihnen helfen, die erforderlichen Software-Tests schneller durchzuführen und so schnellere Produkt-Releases zu ermöglichen.
Und schließlich, entgegen der weit verbreiteten Meinung, dass KI alle Geschäftsaktivitäten „übernehmen“ wird, erleichtert KI nicht-technischen Anwendern die Teilnahme am Testprozess. Sie bringt mehr Personen in den Prozess ein, da KI-gestützte Tools weniger Vorkenntnisse seitens der Tester erfordern.
Ein vollständig verwalteter, mandantenfähiger Service für die Entwicklung und Bereitstellung von Java-Anwendungen.
Verwenden Sie DevOps-Software und -Tools, um cloudnative Anwendungen für mehrere Geräte und Umgebungen zu erstellen, bereitzustellen und zu verwalten.
Die Entwicklung von Cloud-Anwendungen bedeutet: einmal erstellen, schnell iterieren und überall bereitstellen.