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 Form der Pyramide ist in mehrfacher Hinsicht zu verstehen:
Ü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.
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.
Wenn die einzeln getesteten Komponenten zum Gesamtsystem zusammengestellt werden, folgt der Integrationstest. In dieser Teststufe sind u.a. folgende Fragen anzutreffen:
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“.
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:
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.
Manuelle Tests sind unverzichtbar, wenn es um die folgenden Testarten geht:
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!
Gern stehen wir Ihnen mit Know-how, konkreten Unterstützungsleistungen und zugehörigen Lizenz- und Supportangeboten zur Verfügung.