stairsTeststufen

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.

chevron-rightVoraussetzungenhashtag

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.

chevron-rightAbgrenzunghashtag

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.

chevron-rightVoraussetzungenhashtag

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.

chevron-rightAbgrenzunghashtag

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.

chevron-rightVorgehenhashtag

Man wartet, bis alle Bauteile entwickelt sind, und wirft sie dann „auf einmal“ zusammen.

chevron-rightVorteilehashtag

Es werden theoretisch keine Testtreiber oder Platzhalter benötigt.

chevron-rightNachteilehashtag

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.

chevron-rightVorteilehashtag

Es entsteht frĂŒh ein Simulationsmodell, das dem Benutzer bereits Teile der Funktionen zeigt.

chevron-rightNachteilehashtag

Untergeordnete Komponenten mĂŒssen durch aufwendige Platzhalter (Stubs) simuliert werden.

Bottom-Up-Integration

Man beginnt mit den elementaren Basiskomponenten der untersten Schicht.

chevron-rightVorteilehashtag

Keine Platzhalter erforderlich; das Zusammenwirken mit der Hardware wird frĂŒh geprĂŒft.

chevron-rightNachteilehashtag

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.

chevron-rightVoraussetzungenhashtag

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.

chevron-rightAbgrenzunghashtag

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.

chevron-rightVoraussetzungenhashtag

Ein weitgehend stabiler Stand aus dem Systemtest ist die Regel. Der Test findet oft in der Umgebung des Kunden statt.

chevron-rightAbgrenzunghashtag

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.

chevron-rightFokushashtag

ÜberprĂŒfung der funktionalen Eignung, der GeschĂ€ftsprozesse sowie der Gebrauchstauglichkeit (Usability)

chevron-rightZielhashtag

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.

chevron-rightFokushashtag

Tests zur Datensicherung und Wiederherstellung, Installation, Konfiguration, Benutzerverwaltung sowie ÜberprĂŒfung der Sicherheitsmassnahmen.

chevron-rightZielhashtag

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.

chevron-rightAlpha-Testhashtag

Findet in einer Simulations- oder Nutzungsumgebung direkt beim Hersteller statt, wird jedoch oft von Personen ausserhalb der Entwicklung durchgefĂŒhrt.

chevron-rightBeta-Testhashtag

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