Komponententests
Dies ist die niedrigste Teststufe, in der die elementaren Bausteine der Software (Module, Units, Klassen) isoliert geprüft werden. Ziel ist es, die Funktionalität gemäss der Komponentenspezifikation sicherzustellen und Fehlerzustände im Code frühzeitig aufzudecken.Voraussetzungen
Voraussetzungen
Es muss der Quellcode vorliegen. Da Komponenten meist nicht allein lauffähig sind, ist ein Testrahmen mit Treibern und Platzhaltern (Stubs) erforderlich. Oft kommen hier Frameworks wie JUnit zum Einsatz.
Abgrenzung
Abgrenzung
Er wird meist von den Entwicklern selbst durchgeführt (Entwicklertest) und konzentriert sich auf interne Aspekte, nicht auf das Zusammenspiel mit anderen Teilen.
Integrationstests
Hier wird das Zusammenspiel zwischen zwei oder mehreren bereits getesteten Komponenten oder (Teil-)Systemen geprüft. Der Fokus liegt auf der Aufdeckung von Fehlern in den Schnittstellen und der Kommunikation zwischen den Bausteinen.Voraussetzungen
Voraussetzungen
Die zu integrierenden Teile sollten den Komponententest erfolgreich durchlaufen haben. Es wird eine Integrationsstrategie (z. B. Top-down oder Bottom-up) benötigt, um die Reihenfolge des Zusammenbaus festzulegen.
Abgrenzung
Abgrenzung
Man unterscheidet den Komponentenintegrationstest (interne Schnittstellen) vom Systemintegrationstest (Schnittstellen zu externen Systemen). Im Gegensatz zum Komponententest wird nicht die isolierte Logik, sondern die Wechselwirkung geprüft.
Strategien
Für die Durchführung von Integrationstests gibt es verschiedene Strategien, die festlegen, in welcher Reihenfolge Komponenten zusammengeführt und geprüft werden. Man unterscheidet grundlegend zwischen nicht-inkrementellen und inkrementellen Ansätzen.„Big Bang“-Integration
Bei dieser Strategie werden alle oder eine grosse Anzahl von Komponenten gleichzeitig integriert und als Ganzes getestet.Vorgehen
Vorgehen
Man wartet, bis alle Bauteile entwickelt sind, und wirft sie dann „auf einmal“ zusammen.
Vorteile
Vorteile
Es werden theoretisch keine Testtreiber oder Platzhalter benötigt.
Nachteile
Nachteile
Fehler sind extrem schwer zu lokalisieren, da viele Komponenten gleichzeitig interagieren. Die Wartezeit bis zum Testbeginn ist verlorene Zeit, und Fehler treten geballt auf, was das System oft kaum lauffähig macht.
Top-Down-Integration
Der Test beginnt bei den obersten Komponenten (z.B. der Benutzeroberfläche), die andere aufrufen.Vorteile
Vorteile
Es entsteht früh ein Simulationsmodell, das dem Benutzer bereits Teile der Funktionen zeigt.
Nachteile
Nachteile
Untergeordnete Komponenten müssen durch aufwendige Platzhalter (Stubs) simuliert werden.
Bottom-Up-Integration
Man beginnt mit den elementaren Basiskomponenten der untersten Schicht.Vorteile
Vorteile
Keine Platzhalter erforderlich; das Zusammenwirken mit der Hardware wird früh geprüft.
Nachteile
Nachteile
Erfordert Testtreiber für die oberen Schichten; ein lauffähiges Gesamtsystem ist erst am Ende verfügbar.
Backbone-Integration
Es wird ein Programmskelett („Backbone“) erstellt, in das die Komponenten schrittweise eingehängt werden. Eine moderne Form hiervon ist die Continuous Integration (CI), bei der Codeänderungen mindestens täglich in einen vorhandenen Build integriert werden.Ad-hoc-Integration
Die Komponenten werden einfach in der Reihenfolge ihrer Fertigstellung integriert. Dies spart Zeit, erfordert aber sowohl Platzhalter als auch Testtreiber.Geschäftsprozessorientiert
Es werden gezielt die Komponenten zusammengeführt, die einen spezifischen Geschäftsprozess (z.B. eine Bestellung von der Eingabe bis zur Bezahlung) abbilden.Funktionsorientiert
Integration basierend auf funktionalen Testfällen, wobei die dafür benötigten Komponenten schrittweise „zusammenmontiert“ werden.Hardest First
Diese Strategie priorisiert die Integration der kritischsten oder komplexesten Komponenten zuerst.Systemtests
Diese Stufe prüft das integrierte Gesamtsystem gegen die ursprünglichen Spezifikationen und Anforderungen. Das Ziel ist die Validierung, ob das Produkt aus Sicht des Kunden und Anwenders die funktionalen und nicht funktionalen Anforderungen (wie Performanz oder Sicherheit) erfüllt.Voraussetzungen
Voraussetzungen
Das System muss vollständig integriert sein. Erforderlich ist eine separate Testumgebung, die der späteren Produktivumgebung so nahe wie möglich kommt, um Verfälschungen und Risiken für echte Daten zu vermeiden.
Abgrenzung
Abgrenzung
Während die unteren Stufen eher die technische Korrektheit prüfen (Verifizierung), steht beim Systemtest die Eignung für den Geschäftszweck im Vordergrund (Validierung).
Abnahmetests
Dies ist die letzte Validierungsstufe vor der Inbetriebnahme. Hier entscheidet der Kunde oder Anwender auf Basis von Abnahmekriterien, ob das System vertraglich als mangelfrei gilt und für den Betrieb übernommen wird.Voraussetzungen
Voraussetzungen
Ein weitgehend stabiler Stand aus dem Systemtest ist die Regel. Der Test findet oft in der Umgebung des Kunden statt.
Abgrenzung
Abgrenzung
Im Fokus steht nicht das Finden neuer Fehlerzustände, sondern der Aufbau von Vertrauen in das System und die formale Bestätigung der Gebrauchstauglichkeit.
Strategien
Es gibt verschiedene Strategien und Formen des Abnahmetest, die darauf abzielen, das Vertrauen in das System zu stärken und eine fundierte Entscheidung über dessen Übernahme zu ermöglichen. Dabei wird geprüft, ob das System die Benutzeranforderungen, Geschäftsprozesse und vertraglich vereinbarten Kriterien erfüllt.Benutzerabnahmetest
Diese Form konzentriert sich darauf, ob das System für die vorgesehenen Benutzer in deren Arbeitsumfeld geeignet ist.Fokus
Fokus
Überprüfung der funktionalen Eignung, der Geschäftsprozesse sowie der Gebrauchstauglichkeit (Usability)
Ziel
Ziel
Sicherstellen, dass die Benutzer ihre Aufgaben effektiv, effizient und zufriedenstellend erledigen können.
Betrieblicher Abnahmetest
Hierbei stehen die administrativen und betrieblichen Aspekte des Systems im Vordergrund, die meist durch Systemadministratoren oder Betreiber geprüft werden.Fokus
Fokus
Tests zur Datensicherung und Wiederherstellung, Installation, Konfiguration, Benutzerverwaltung sowie Überprüfung der Sicherheitsmassnahmen.
Ziel
Ziel
Sicherstellung, dass das System stabil in die vorhandene IT-Infrastruktur integriert werden kann und betriebsbereit bleibt.
Vertraglicher Abnahmetest
Prüft die Erfüllung der im Entwicklungsvertrag festgeschriebenen Abnahmekriterien bei Individualsoftware.Regulatorischer Abnahmetest
Verifiziert, ob das System zu relevanten Gesetzen, Normen oder Sicherheitsvorschriften konform ist (z. B. Datenschutz oder branchenspezifische Standards).Feldtests
Diese Strategien werden vor allem für Software auf dem breiten Markt (Standardsoftware) eingesetzt, um Feedback aus realen Nutzungsszenarien zu erhalten.Alpha-Test
Alpha-Test
Findet in einer Simulations- oder Nutzungsumgebung direkt beim Hersteller statt, wird jedoch oft von Personen ausserhalb der Entwicklung durchgeführt.
Beta-Test
Beta-Test
Das System wird ausgewählten „Pilot“-Kunden in deren eigener realer Umgebung zur Verfügung gestellt, um unvorhergesehene Probleme vor der endgültigen Markteinführung aufzudecken.
Die Teststufen bauen logisch aufeinander auf: Fehler sollen idealerweise auf der Stufe gefunden werden, auf der sie entstanden sind. Ein wesentlicher Zusammenhang wird durch die Testpyramide verdeutlicht: Sie empfiehlt eine grosse Anzahl schneller, automatisierter Komponententests an der Basis und eine geringere Anzahl komplexer System- und Abnahmetests an der Spitze. In agilen Projekten verschwimmen die zeitlichen Grenzen oft, da alle Teststufen innerhalb einer Iteration (Sprint) parallel oder in enger Folge durchlaufen werden, um kontinuierlich ein potenziell auslieferbares Produktinkrement zu erzeugen.