Drei gängige Arten der Testautomatisierung

Beginnen wir mit den Grundlagen. Die beiden allgemeinen Testmodi und die drei gängigen Arten der Testautomatisierung.

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

Ein Schrank mit zwei Schubladen, die sich nicht gleichzeitig öffnen lassen.

Dieses Meme fasst es ziemlich gut zusammen: Jede Schublade funktioniert einzeln perfekt, aber in Kombination mit der anderen Schublade blockieren sie sich gegenseitig und funktionieren nicht. Beide Schubladen sollten gut miteinander funktionieren und gleichzeitig betätigt werden können.

Derselbe Schrank, aber mit zwei Schubladen, die gleichzeitig geöffnet werden können.

Angenommen, Sie haben einige Tests geschrieben und vielleicht sogar eine Testabdeckung von 100% erreicht. Ihre Anwendung muss aber trotzdem funktionieren, sobald andere Teile an ihren Platz gerückt sind. Die einzelnen Einheiten funktionieren möglicherweise gut für sich, aber nicht im Verhältnis zueinander. Das Erstellen einiger Tests ist wichtig, aber nur ein Teil der idealen Testeinrichtung für Ihr Projekt. Als allerersten Schritt müssen Sie festlegen, welche Aspekte der Anwendungsqualität Sie sicherstellen müssen und wie Sie dies erreichen können.

Einfach ausgedrückt: Sie benötigen einen Plan, bevor Sie mit dem Schreiben des eigentlichen Testcodes beginnen. Bevor wir uns dem Thema praktischer Tests widmen, beginnen wir mit einem weißen Blatt und beantworten zwei grundlegende Fragen:

  • Wie möchten Sie testen?
  • Was soll getestet werden?

In diesem Artikel geht es hauptsächlich um die allgemeinen Dinge, die Sie wissen müssen, um die erste Frage zu beantworten. Damit wir auf einer gemeinsamen Grundlage beginnen können, sehen wir uns zuerst an, welche Testmodi es gibt, und konzentrieren uns dann auf die gängigen Testtypen. In späteren Artikeln beantworten wir die zweite Frage, kombinieren die Antworten und finden die Teststrategie, die für Ihr Projekt am besten geeignet ist. Los gehts! 🙌

Mit den Grundlagen beginnen: Allgemeine Testmodi

Bei der Beantwortung der Frage, wie getestet werden soll, ist der erste Punkt, der geklärt werden muss, sehr abstrakt. Sollten Sie manuell testen oder einen Computer übernehmen lassen? Es ist jedoch wichtig, hier nicht in ein binäres Denken zu verfallen.

Manuelle Tests im Vergleich zu automatisierten Tests

Wenn Sie Qualitätssicherungsexperten bitten, Tests zu definieren, werden sie sie wahrscheinlich zuerst in zwei „Modi“ unterteilen:

  • Manuelle Tests Dies ist eine typische Testmethode, die von echten Personen durchgeführt wird. Ein Qualitätssicherungstechniker klickt sich durch die Anwendung, prüft, ob sie funktioniert, und versucht gleichzeitig, sie zum Absturz zu bringen. Die gängigste Methode sind explorative Tests, bei denen die Entwickler die Anwendung anhand ihres Wissens über die Anwendung anhand eines vordefinierten Pfades oder einer Checkliste untersuchen.
  • Automatisierte Tests Diese Art von Tests wird von einem Computer durchgeführt. Qualitätssicherungsexperten implementieren es, um sich wiederkehrende und monotone Tests zu sparen.

In dieser Reihe von Anleitungen liegt der Schwerpunkt auf automatisierten Tests. Sie sollten sich jedoch nicht nur auf eine Testmethode konzentrieren. Auch wenn die Automatisierung viel Zeit und Mühe spart, spielen Menschen und manuelle Tests immer eine wichtige Rolle. Stattdessen sollte die Testautomatisierung die Mitarbeiter in die Lage versetzen, sich auf explorative Tests und kreative Problemlösungen zu konzentrieren. Beispielsweise können Sie damit die Qualität der Nutzererfahrung verbessern oder die Geschäftslogik mit hohem Risiko schützen. Mit anderen Worten: Die Automatisierung unterstützt Sie. ❤️

Opaque Box im Vergleich zu Clear Box

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

  • Opaque-Box-Tests (oder Black-Box-Tests). Sie basiert auf der Analyse der funktionalen oder nicht funktionalen Anforderungen (Spezifikationen) einer Komponente oder eines Systems, ohne die interne Struktur zu berücksichtigen.
  • Beim Clear-Box-Test (White-Box-Test) wird die interne Struktur des Geräts berücksichtigt. Mit anderen Worten: Wie Ihre Anwendung im Hintergrund funktioniert.

Beide Verfahren können sowohl auf manuelle als auch auf automatisierte Tests angewendet werden. Bei einigen Aspekten der allgemeinen Testmodi liegt der Schwerpunkt jedoch eher auf einem der beiden Aspekte. Darauf gehen wir später ein. Sehen wir uns jetzt die verschiedenen Arten der Testautomatisierung an.

Arten der Testautomatisierung: Wie möchten Sie testen?

Sie nähern sich der Beantwortung der Frage „Wie?“ und haben sich bereits für einige manuelle Tests entschieden. 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 genauer an.

Wie im bereits erwähnten Meme dargestellt, sind Ihnen bereits zwei Arten begegnet: Unit-Tests und Integrationstests. End-to-End-Tests sind der dritte wichtige Punkt. Aber das sind noch nicht alle. Sehen wir uns das genauer an.

Unittest

Bei einem Unit-Test werden kleinere testbare Teile oder Einheiten einer Anwendung einzeln und unabhängig auf ordnungsgemäßen Betrieb geprüft. Diese Einheiten können von Funktionen, Klassen oder Schnittstellen bis hin zu Diensten oder ganzen Komponenten reichen. Zu ihren wichtigsten Eigenschaften gehören Ausführungsgeschwindigkeit, Isolation und einfache Wartung. Wenn Sie mehr über Unit-Tests erfahren möchten, lesen Sie den Leitfaden zu Unit-Tests.

Eine vereinfachte Darstellung von Unit-Tests mit Eingabe und Ausgabe

Integrationstests

Bei Integrationstests liegt der Schwerpunkt auf den Interaktionen zwischen Komponenten oder Systemen. Mit anderen Worten: Wie gut sie zusammenarbeiten. Typische Beispiele für Integrationstests sind API- oder Komponententests.

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

End-to-End-Tests

Diese Tests werden oft als UI-Tests bezeichnet, was ihre Funktion noch besser erklärt. Bei diesen Tests wird die Benutzeroberfläche Ihrer Anwendung einschließlich des gesamten Anwendungsstacks und der gesamten Anwendung getestet.

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

Sie ähneln einem Systemtest, wenn Sie sich auf die Theorie der Qualitätssicherung beziehen. Bei diesen Tests werden echte Nutzer und ihre Interaktionen simuliert. End-to-End-Tests benötigen mehr Laufzeit, da sie das gesamte System umfassen. Mehr Laufzeit erfordert mehr Rechenleistung. Dieser zusätzliche Aufwand führt zu höheren Wartungskosten.

Visuelle UI-Tests

Eine interessante Unterkategorie von UI-Tests sind visuelle Tests. Diese Tests sind erweiterte End-to-End-Tests, mit denen die sichtbare Ausgabe einer Anwendung überprüft werden kann. Bei einem solchen Test wird ein Screenshot nach einer Änderung und ein weiterer Screenshot mit dem „Status quo“ (oder der Goldenen Datei) aufgenommen. Diese Ergebnisse werden dann einem Prüfer zur Prüfung und Überprüfung vorgelegt. Mit anderen Worten: Es hilft, „visuelle Fehler“ im Erscheinungsbild einer Seite zu finden, die über rein funktionale Fehler hinausgehen und nicht explizit in Behauptungen festgehalten sind.

Statische Analyse

Es gibt noch eine weitere Sache, die wir hier vorstellen möchten: die statische Analyse. Es ist kein Testtyp im klassischen Sinne. Später wird es jedoch ein wesentlicher Aspekt in den Strategien zur Qualitätssicherung sein. Sie können sich das wie eine Funktion zur Rechtschreibprüfung vorstellen: Der Code wird auf schwerwiegendere Mängel und Syntaxfehler geprüft, ohne dass das Programm ausgeführt wird. So werden Probleme mit dem Codestil erkannt. Diese einfache Maßnahme kann viele Fehler verhindern. Dies ist ein guter Zeitpunkt, um mehr über die statische Analyse zu erfahren.

Tests in allen Formen: Wie funktioniert das alles zusammen?

Bei der Suche nach Antworten auf all diese Fragen finden Sie möglicherweise eine mögliche Lösung in einigen Analogien. Insbesondere in der Web- und Testbranche verwenden Entwickler diese Analogien, um Ihnen eine Vorstellung davon zu vermitteln, wie viele Tests Sie von welchem Typ verwenden sollten.

Viele Formen wie Pyramiden, Rauten, Eiswaffeln, Waben und eine Trophäe, die Teststrategien darstellen.

Die folgenden fünf Strategien in diesem Bild sind die gängigsten:

  • Testpyramide
  • Test Diamond
  • Test-Eiswaffel (auch als Test-Pizza bezeichnet)
  • Test Honeycomb
  • Test-Trophäe

Das sind wirklich viele Informationen, die verarbeitet werden müssen. Wie sollten Sie anhand dieser Informationen eine passende Teststrategie auswählen? Keine Sorge, wir helfen Ihnen weiter. Im nächsten Artikel werden wir diese verschiedenen Strategien genauer erläutern und erklären, wie Sie die für Ihr Projekt am besten geeignete Strategie auswählen. Mehr dazu demnächst! 🔥