Teststufen
In der Softwareentwicklung werden TestaktivitÀten in verschiedene Teststufen unterteilt, die jeweils unterschiedliche Ziele verfolgen und auf verschiedenen Ebenen der Systemarchitektur ansetzen.
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
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
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
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
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
Man wartet, bis alle Bauteile entwickelt sind, und wirft sie dann âauf einmalâ zusammen.
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
Es entsteht frĂŒh ein Simulationsmodell, das dem Benutzer bereits Teile der Funktionen zeigt.
Bottom-Up-Integration
Man beginnt mit den elementaren Basiskomponenten der untersten Schicht.
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
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
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
Ein weitgehend stabiler Stand aus dem Systemtest ist die Regel. Der Test findet oft in der Umgebung des Kunden statt.
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
ĂberprĂŒfung der funktionalen Eignung, der GeschĂ€ftsprozesse sowie der Gebrauchstauglichkeit (Usability)
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
Tests zur Datensicherung und Wiederherstellung, Installation, Konfiguration, Benutzerverwaltung sowie ĂberprĂŒfung der Sicherheitsmassnahmen.
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
Findet in einer Simulations- oder Nutzungsumgebung direkt beim Hersteller statt, wird jedoch oft von Personen ausserhalb der Entwicklung durchgefĂŒhrt.
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.
Last updated