Blog über Software, Mensch und Persönlicher Entwicklung

Teststufen oder Testebenen - Richard Seidl

Geschrieben von Richard Seidl | 17.03.2021

Teststufen sind ein sehr praktikables Modell, um Testaktivitäten zu strukturieren. Jede dieserTeststufe deckt dabei einen anderen Teil der Software und dem Entwicklungskontext ab.

Was sind Teststufen?

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:

  • Sie betrachten komplett unterschiedliche Bereiche der Software
  • Die Tester haben je Teststufe ganz verschiedene Aufgaben
  • Testziele, Infrastruktur, Testdaten, Rahmenbedingungen und Zeitplanung weichen stark voneinander ab

Jede Teststufe ist ein wichtiges Puzzleteil für den Qualitätserfolg und sollte nicht vernachlässigt werden.

Ein Synonym für Teststufe ist Testebene.

Welche Teststufen gibt es?

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:

  • Unittests (oder Modul- bzw. Komponententests) testen die kleinsten Einheiten in der Software für sich
  • Komponenten-Integrationstests testen das Zusammenspiel dieser Einheiten
  • Systemtests testen das integrierte Gesamtsystem für sich
  • System-Integrationstests testen das Zusammenwirken mehrere Systeme
  • Abnahmetests (oder Akzeptanztests) testen das Komplettsystem samt Schnittstellen, um die System-Abnahme zu ermöglichen

Diese Einteilung macht in den meisten Projekten Sinn, ist aber natürlich an die Gegebenheiten anzupassen.

Unterschied zwischen Teststufen und der Testpyramide

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:

  • Untere Testebenen haben mehr Testfälle als höhere Testebenen
  • Untere Testebenen sind schneller als die höheren
  • Der Integrationsgrad nimmt zu den höheren Testebenen zu.

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.

In der Praxis

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:

  1. Die Unterschiedlichkeit der Stufen. Es ist eben ein großer Unterschied, ob ich Unittests oder Systemtests definiere und umsetze. Selbst wenn diese im gleichen Framework entwickelt werden, wie z.B. JUnit. Das Tool ist das gleiche, aber die Testfälle könnten unterschiedlicher nicht sein und decken komplett andere Sichtweisen auf die Applikation ab.
  2. Die Kombination mit den Testarten. Gerade nicht-funktionale Tests werden oft vernachlässigt. Das kann zu massiven Problemen führen. Ein Beispiel: Erst gegen Ende das Projekts werden Performancetests durchgeführt. Diese zeigen Architektur-Schwächen auf. Nun kostet es viel Geld und Zeit diese strukturellen Probleme zu lösen. Die Kombi mit den Teststufen schafft hierfür schon frühzeitig Awareness. Wie könnte z.B. Robustheit auf Unittestebene aussehen? Effizienz bei Integrationstests? Zuverlässigkeit bei Systemtests?

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.