Drei gängige Arten der Testautomatisierung

Beginnen wir mit den Grundlagen! Die beiden allgemeinen Testmodi und drei gängige Arten der Testautomatisierung kennenlernen.

Wer kennt es nicht: Was ist ein wiederkehrendes Meme, das im echten Leben allzu oft vorkommt?

Ein Schrank mit zwei Schubladen, den du nicht gleichzeitig öffnen kannst.

Dieses Meme fasst es ganz gut zusammen: Jede Schublade funktioniert einzeln einwandfrei, aber in Kombination mit der anderen versperren sie sich gegenseitig und funktionieren nicht mehr. Die beiden Schubladen sollen gut zusammen funktionieren und gleichzeitig bedienbar sein.

Derselbe Schrank mit zwei Schubladen, den du gleichzeitig öffnen kannst.

Wenden Sie dies auf die Webentwicklung an: Sie haben einige Tests durchgeführt und vielleicht sogar eine Testabdeckung von 100% erreicht. Ihre Anwendung muss aber noch funktionieren, nachdem andere Teile eingerichtet wurden. Die Einheiten funktionieren möglicherweise für sich allein gut, aber nicht in Relation zueinander. Das Schreiben einiger Tests ist zwar wichtig, aber dies ist nur ein Teil der idealen Testeinrichtung für Ihr Projekt. Als ersten Schritt müssen Sie festlegen, welche Aspekte der App-Qualität Sie sicherstellen müssen und wie Sie dies erreichen können.

Einfach ausgedrückt: Sie brauchen einen Plan, bevor Sie damit beginnen, den eigentlichen Testcode zu schreiben. Beginnen wir mit einem neuen Konzept und beantworten zwei grundlegende Fragen, um die praktischen Tests zu besprechen:

  • Wie möchten Sie testen?
  • Wann soll der Test stattfinden?

Dieser Artikel konzentriert sich auf die allgemeinen Dinge, die Sie wissen müssen, um die erste Frage zu beantworten. Zunächst sehen wir uns an, welche Testmodi es gibt, und konzentrieren uns dann auf die gängigen Testtypen. In späteren Artikeln werden wir die zweite Frage beantworten, die Antworten kombinieren und die Teststrategie ermitteln, die für Ihr Projekt am besten geeignet ist. Los gehts! 🙌

Beginnen Sie mit den Grundlagen: Allgemeine Testmodi

Der erste Punkt zur Beantwortung der Frage, wie man getestet wird, ist sehr abstrakt. Sollten Sie den Test manuell durchführen oder einen Computer übernehmen? Es ist jedoch wichtig, hier nicht in binäres Denken zu fallen.

Manuelle und automatisierte Tests im Vergleich

Wenn Sie das Engineering-Team für die Qualitätssicherung bitten, Tests zu definieren, wird es diese wahrscheinlich zuerst in zwei „Modi“ unterteilen:

  • Manuelle Tests: Dies ist eine typische Testmethode, die von echten Personen durchgeführt wird. Ein Quality Assurance Engineer sieht sich die Anwendung an, überprüft, ob sie funktioniert, und versucht gleichzeitig, sie zu kaputt zu machen. Die gängigste Methode sind explorative Tests, bei denen der Entwickler die Anwendung anhand eines vordefinierten Pfades oder einer Checkliste untersucht.
  • Automatisierte Tests: Hierbei handelt es sich um einen Test, der von einem Computer durchgeführt wird. Das Qualitätssicherungsteam implementiert es, um sich wiederholende und monotone Tests zu automatisieren.

Diese Reihe von Anleitungen konzentriert sich hauptsächlich auf automatisierte Tests. Sie sollten sich jedoch nicht nur auf eine Testmethode konzentrieren. Selbst wenn die Automatisierung viel Zeit und Aufwand einspart, spielen menschliche und manuelle Tests immer eine wichtige Rolle. Vielmehr sollte die Testautomatisierung die Menschen freisetzen, um sich auf explorative Tests und das kreative Lösen von Problemen zu konzentrieren. Zum Beispiel, um die Qualität der Nutzererfahrung sicherzustellen oder die risikoreiche Geschäftslogik zu schützen. Mit anderen Worten: Automatisierung unterstützt Sie dabei. ❤️

Undurchsichtiges und transparentes Feld im Vergleich

Sie haben also die allgemeinen Testmodi definiert. Das reicht jedoch noch nicht aus. Für die Planung der Teststrategie müssen Sie noch eine weitere Frage beantworten: Sollten Sie wissen, wie Ihre Anwendung im Hintergrund funktioniert, oder ist es besser, ohne dieses Wissen zu testen? Je nach Antwort können Sie aus zwei Verfahren zur Ableitung und Auswahl von Testfällen wählen:

  • Opaque-Box-Tests (oder Black-Box-Tests). Es basiert auf der Analyse der funktionalen oder nicht funktionalen Anforderungen (Spezifikationen) einer Komponente oder eines Systems, ohne die interne Struktur zu berücksichtigen.
  • Clear-Box-Tests (oder White-Box-Tests) sind ein Verfahren, bei dem die interne Struktur dieser Boxen berücksichtigt wird. Mit anderen Worten, wie Ihre Anwendung im Hintergrund funktioniert.

Beide Verfahren können auf manuelle und automatisierte Tests angewendet werden. Einige Aspekte der allgemeinen Testmodi können sich jedoch stärker auf einen der beiden konzentrieren – darauf kommen wir später zurück. Zunächst schlüsseln wir die Testautomatisierung in Typen weiter auf.

Automatisierungsarten testen: Wie möchten Sie testen?

Da Sie der Beantwortung der „Wie“-Frage immer näher kommen, haben Sie bereits beschlossen, einige manuelle Tests durchzuführen. Die Auswahl und Anwendung von Testautomatisierungstypen ist jedoch etwas schwieriger. Die Arten von Automatisierungstests hängen eng mit den Messwerten zusammen, die Sie in Ihren Projekten erstellen möchten. Sehen wir uns die wichtigsten nun genauer an.

Wie im Meme bereits erwähnt, sind Ihnen bereits zwei Arten aufgefallen: Unittests und Integrationstests. End-to-End-Tests sind die dritte wichtige Phase, die berücksichtigt werden sollte. Aber das sind noch nicht alle. Sehen wir uns das genauer an.

Unittest

Einheitentests sind ein Testtyp, bei dem kleinere testbare Teile oder Einheiten einer Anwendung einzeln und unabhängig auf ihren ordnungsgemäßen Betrieb getestet werden. Der Umfang dieser Einheiten kann sich von Funktionen, Klassen oder Schnittstellen bis hin zu Diensten oder vollständigen Komponenten unterscheiden. Ihre Hauptmerkmale sind Ausführungsgeschwindigkeit, Isolation und einfache Verwaltbarkeit. Weitere Informationen zu Einheitentests finden Sie in diesem Leitfaden zu Einheitentests.

Eine vereinfachte Darstellung von Unittests mit Eingabe und Ausgabe.

Integrationstests

Integrationstests konzentrieren sich auf Interaktionen zwischen Komponenten oder Systemen. Mit anderen Worten: Wie gut sie zusammenwirken. Typische Beispiele für Integrationstests sind API- oder Komponententests.

Eine vereinfachte Darstellung von Integrationstests, die zeigt, wie zwei Einheiten zusammenarbeiten.

End-to-End-Tests

Diese Tests werden oft als UI-Tests bezeichnet und der Name erklärt ihre Funktion noch besser. Diese Tests interagieren mit der Benutzeroberfläche Ihrer Anwendung, einschließlich des gesamten Anwendungspakets, und testen Ihre Anwendung von einem Ende zum anderen.

Eine vereinfachte Darstellung von End-to-End-Tests, die einen Computer als Roboter zeigt, der einen Workflow betrachtet.

Sie ähneln einem Systemtest, wenn Sie sich auf die Theorie der Qualitätssicherung beziehen. Bei diesen Tests werden echte Nutzer und deren Interaktionen simuliert. End-to-End-Tests erfordern mehr Laufzeiten, da sie das gesamte System einbeziehen und eine größere Laufzeit mehr Rechenleistung erfordert. Dieser zusätzliche Aufwand führt also zu höheren Wartungskosten.

Testen der visuellen Benutzeroberfläche

Eine interessante Unterkategorie von UI-Tests sind visuelle Tests. Diese Tests sind erweiterte End-to-End-Tests, mit denen die sichtbare Ausgabe einer Anwendung geprüft werden kann. Bei einem solchen Test wird nach einer Änderung ein Screenshot erstellt und ein weiterer Screenshot mit dem Status quo (oder einer goldenen Datei) und diese Ergebnisse dann einem manuellen Prüfer zur Verfügung gestellt. Mit anderen Worten, es hilft, „visuelle Fehler“ im Erscheinungsbild einer Seite zu finden, die über rein funktionale Fehler hinausgehen und nicht explizit in Assertions geschrieben werden.

Statische Analyse

Ich möchte hier noch eine Sache einführen: die statische Analyse. Es handelt sich nicht um einen Testtyp im Sinne von Lehrbuch. Später wird er jedoch ein wesentlicher Aspekt in Qualitätssicherungsstrategien sein. Sie können sich die Funktion wie eine Rechtschreibprüfung vorstellen: Sie scannt Ihren Code auf schwerwiegendere Mängel und Syntaxfehler, ohne das Programm ausführen zu müssen, wodurch Probleme mit dem Codestil erkannt werden. Durch diese einfache Maßnahme können viele Fehler verhindert werden. Dies ist ein guter Zeitpunkt, um sich mit der statischen Analyse vertraut zu machen, wenn Sie sie genauer kennenlernen möchten.

Testen in vielerlei Hinsicht: Wie funktioniert das alles?

Wenn Sie nach Antworten auf alle diese Fragen suchen, finden Sie möglicherweise in einigen Analogien eine mögliche Lösung. Insbesondere im Web und bei Test-Communitys verwenden Entwickler diese Analogien, um Ihnen eine Vorstellung davon zu geben, wie viele Tests welcher Art verwendet werden sollten.

Viele Formen wie Pyramide, Rauten, Eiskegel, Waben und eine Trophäe, die Teststrategien darstellen

Die folgenden fünf Strategien, die in diesem Bild dargestellt werden, sind die häufigsten:

  • Testpyramide
  • Testdiamant
  • Testeiswaffel (auch Test Pizza genannt)
  • Honeycomb testen
  • Test-Trophäe

Das sind wirklich viele Informationen, die verarbeitet werden müssen. Wie kannst du basierend auf all diesen Informationen eine passende Teststrategie auswählen? Keine Sorge, wir kümmern uns darum. Im nächsten Artikel werden wir diese verschiedenen Strategien ausführlicher besprechen und erklären, wie Sie die beste Lösung für Ihr Projekt auswählen. Mehr dazu demnächst! 🔥