Teststufen sind ein sehr praktikables Modell, um Testaktivitäten zu strukturieren. Jede dieserTeststufe deckt dabei einen anderen Teil der Software und dem Entwicklungskontext ab.
Das ISTQB definiert Teststufe als “Eine spezifische Instanziierung eines Testprozesses.” Das klingt im ersten Moment recht abstrakt. Natürlich ist auf jeder Stufe ein Testprozess vorhanden. Ich finde, das wird der Bedeutung der Teststufen nicht gerecht. Teststufen sind für mich ein Kernelement einer Teststrategie. Warum? Die Teststufen unterscheiden sich massiv voneinander:
Jede Teststufe ist ein wichtiges Puzzleteil für den Qualitätserfolg und sollte nicht vernachlässigt werden.
Ein Synonym für Teststufe ist Testebene.
Die klassischen Stufen sind: Unittest, Integrationstest, Systemtest und Abnahmetest. Integrationen können auf verschiedenen Ebenen stattfinden, die aber unterschiedlich getestet werden. Daher gibt es hier noch die Unterscheidung zwischen Komponenten-Integrationstest und System-Integrationstest. Die Ebenen bauen logisch aufeinander auf, worauf auch die Entstehung dieses Modells beruht:
Diese Einteilung macht in den meisten Projekten Sinn, ist aber natürlich an die Gegebenheiten anzupassen.
Im Agile Testing verwenden wir häufig ein Modell von Mike Cohn: Die Testpyramide. Legt man sie neben die Teststufen lässt sich eine Ähnlichkeit nicht leugnen. Die Testpyramide unterscheidet auch verschiedene Ebenen. In der ursprünglichen Variante waren es Unittest, Service Test und UI Tests. Mittlerweile gibt es dazu auch unzählige Derivate. Die Testpyramide fokussiert mehr auf den Aspekt der Testautomatisierung:
Ich kenne Entwickler, die beide Modelle nutzen und zum Teil auch kombinieren. Wie auch die Teststufen ist die Testpyramide ein Konzept mit ein paar Schubladen. Im Alltag müssen diese Modell immer wieder hinterfragt werden.
Für mich sind Teststufen ein Grundpfeiler der Teststrategie. Ich betrachte Sie zu Beginn eines Projektes in immer in Kombination mit den Testarten. Daraus ergibt sich eine Matrix, aus der sich ein Großteil der Testaktivitäten ableiten lässt. Das ist sowohl für klassische als auch für agile Softwareentwicklung ein wichtiger Anhaltspunkt.
Funktionalität | Effizienz | Usability | ... | |
Unittest | x | x | ||
Komponentenintegrationstest | x | |||
Systemtest | x | x | x | |
... |
Bei allen Beteiligten gibt es dann immer wieder zwei Aha-Momente:
Teststufen bringen im Projektalltag Struktur und Klarheit in die Software-Tests. Das erlebe ich immer wieder. Ein weiterer Vorteil: Diese Klarheit ist schnell zu erreichen. Einen Überblick über die für das Projekt relevanten Teststufen und Testarten lässt sich schon in einem ersten Workshop schaffen. Der Mehrwert davon sehr groß, ein Quick-Win für jedes Projekt.