Test AutomationTestpyramide

Testen auf stabilem Fundament

Moderne Software ist kein Monolith, sondern ein komplexes System bestehend aus spezialisierten Modulen. So kommuniziert die Oberfläche einer Webseite („Frontend“) mit internen Systemen („Backend“), die wiederum verschiedene Schnittstellen zu Datenbanken oder anderen Software-Systemen aufweisen.

Es ist also naheliegend, jeden Bereich für sich zu testen, bevor die gesamte Software aus Anwendersicht geprüft wird. Dies erfolgt üblicherweise in drei Teststufen:

Die Testpyramide skizziert die verschiedenen Testarten und deren Aufbau

Ansprechpartner

Christoph Brachmann
Managing IT-Consultant | Teamlead | Technical SalesChristoph Brachmann+49 351 44008 295+49 160 2765 889cbrachmann (at) proficom.de
Erklärung der Testpyramide

Warum eine Testpyramide?

Die Form der Pyramide ist in mehrfacher Hinsicht zu verstehen:

  • Jede Stufe baut auf der vorhergehenden Stufe auf.
  • Die Basis bilden viele, schnell ausführbare Tests im Komponententest.
  • Die Spitze bilden wenige, mit hohem Testaufwand verbundene Tests im Systemtest.

Übrigens: Betrachtet man die Kostenseite von Fehlern, ergibt sich eine umgekehrte Pyramide. Fehler, die erst im Systemtest gefunden werden, ziehen oft umfangreiche Änderungen nach sich und sind teurer.

Komponententests lassen frühzeitig Änderungen am Verhalten einer Software erkennen

Komponententest

Komponententest (engl.: Unit Test) bilden das Fundament der Testpyramide. In dieser Teststufe werden die einzelnen Komponenten eines Systems unabhängig getestet. Alle Schnittstellen zu den anderen Komponenten werden dabei simuliert, um so auch Fehlersituationen überprüfen zu können.

Die Testdurchführungen haben das Ziel, frühzeitig zu erkennen, ob es zu unerwarteten Änderungen des Verhaltens einer Software gekommen ist. Deshalb werden Komponententests fast immer im Rahmen einer CI-/CD-Pipeline mit jedem Build ausgeführt.

Da die Interaktion zu anderen Schnittstellen simuliert wird, können die Tests in kürzester Zeit durchgeführt werden. Unser Erfahrungswert ist: Die Summe der Komponententests sollte nicht länger als 10 Minuten dauern.

Zum Einsatz kommen hier entwicklungsnahe Tools wie JUnit, TestNG oder Mocha. 

Integrationstests dienen der Prüfung der Kompatibilität mehrerer Komponenten

Integrationstest

Wenn die einzeln getesteten Komponenten zum Gesamtsystem zusammengestellt werden, folgt der Integrationstest. In dieser Teststufe sind u.a. folgende Fragen anzutreffen:

  • Sind die Datenformate zwischen zwei Komponenten kompatibel?
  • Wie verhält sich die Komponente 1, wenn die Daten der Komponente 2 verzögert bereitgestellt werden?
  • Kann die Komponente 1 die Daten aus Komponente 2 missbräuchlich verwenden, manipulieren oder zerstören?

Bestehende Frameworks aus Komponententests werden dabei durch Tools wie z.B. REST Assured ergänzt. Dabei liegt der Fokus jetzt auf den Qualitätsmerkmalen „Zuverlässigkeit“, „Kompatibilität“ und „Sicherheit“.

Der Systemtest ist aufwändig, da er mit einem hohem Testaufwand unter Beteiligung mehrerer System verbunden ist

Systemtest

Nachdem alle Komponenten einer Software getestet und auch deren Schnittstellen untereinander geprüft wurden, schließt sich der sogenannte „Systemtest“ an. Jetzt wird die Software ausschließlich als „Black Box“ betrachtet. Auf dieser Teststufe finden sich u.a. die folgenden Tests:

  • Tests des User-Interfaces, automatisiert oder manuell durch Reviews
  • anwendungsfallbasierte Tests über mehrere Systeme (End-to-End-Tests)
    beispielsweise mit Zugriff auf beteiligte Systeme, die nur eingeschränkt zum Test bereitstehen

Oft kommt hier eine Test-Umgebung zum Einsatz, die nah am späteren Produktiv-System ist.

Dabei kommen Tools wie z.B. Micro Focus UFT oder Selenium zum Einsatz.

Es ist anzuraten, den Systemtest ebenfalls kontinuierlich im Rahmen der Regressionstest in CI-/CD-Pipelines auszuführen.

Manuelles Testen ist in bestimmten Fällen notwendig

Manuelles Testen

Manuelle Tests sind unverzichtbar, wenn es um die folgenden Testarten geht:

  • User Acceptance Tests, also Tests mit Endanwendern
  • Abnahmetests einer Software zur finalen Abnahme einer Software-Entwicklung
  • Smoke-Tests beim Ausrollen auf schwer zu automatisierende Systeme in der Test- oder Produktiv-Umgebung

Oft findet man manuelle Tests auf der Systemtest-Stufe, sie können jedoch auch für den Komponenten- oder Integrations-Test verwendet werden.

Kontaktieren Sie uns, damit wir das für Sie passende Testkonzept entwickeln können!

Sprechen wir gemeinsam über Ihre Ziele und Wünsche

Sie haben Fragen?

Gern stehen wir Ihnen mit Know-how, konkreten Unterstützungsleistungen und zugehörigen Lizenz- und Supportangeboten zur Verfügung.

Background Image Mobile Version