In allen Lebensbereichen haben wir mit Softwaresystemen zu tun: Apps auf dem Smartphone, Steuerungen von technischen Systemen oder Managementsysteme von Unternehmen. Überall müssen wir darauf vertrauen, dass diese Systeme funktionieren. Fehler in den Systemen können dramatische Auswirkungen haben und zu finanziellen, zeitlichen oder sogar persönlichen Schäden führen.

Was ist Testen?

Softwaretesten ist eine Möglichkeit, die Qualität von Softwaresystemen zu bewerten und sicherstellen, dass es im Betrieb dieser Systeme nicht zu unerwünschten Auswirkungen kommen kann.

Eine Definition für Softwaretesten lautet:

Der Prozess, der aus allen statischen und dynamischen Lebenszyklusaktivitäten besteht, die sich mit der Planung, Vorbereitung und Bewertung einer Komponente oder eines Systems und zugehörigen Arbeitsergebnissen befassen, um festzustellen, ob sie festgelegte Anforderungen erfüllen, für den Zweck geeignet und fehlerfrei sind.

Testen besteht also nicht nur darin, Tests für ein Softwaresystem auszuführen und die Ergebnisse zu bewerten, sondern umfasst zahlreiche weitere Aktivitäten wie z.B. die Planung und Vorbereitung, aber auch den Abschluss der Testaktivitäten. Alle diese Aktivitäten sind wichtig und sollten durch einen geeigneten Testprozess unterstützt werden.

Der Testprozess

Es gibt nicht den einen Testprozess, jedoch gibt es eine Menge von Testaktivitäten, welche ein Testprozess typischerweise berücksichtigen sollte – und zwar unabhängig davon, welche Art von System wir entwickeln (z.B. webbasierte Anwendung, eingebettetes System) oder nach welchem Entwicklungsmodell (z.B. V-Modell, Scrum) wir vorgehen.

Ein Testprozess (wie er in den Lehrplänen des ISTQB definiert wird) umfasst demnach die folgenden Aktivitäten:

  • Testplanung
  • Testüberwachung und -steuerung
  • Testanalyse
  • Testentwurf
  • Testrealisierung
  • Testdurchführung
  • Testabschluss

Die Aktivitäten im Testprozess

Diese Aktivitäten können dabei sehr unterschiedlich ausgeprägt sein: sie können einmalig, mehrfach, sequentiell, überlappend und/oder parallel ausgeführt werden – jeweils abhängig vom Projekt- und Systemkontext.

Testplanung 

Ein Testprojekt beginnt mit der Planung, dabei werden die Testziele definiert und die Schritte zum Erreichen dieser Testziele identifiziert und geplant. Da das Testen immer im Kontext eines bestimmten Projekts erfolgt, sind die Rahmenbedingungen des Projekts in der Testplanung zu berücksichtigen, z.B. bestimmte Qualitätserwartungen des Auftraggebers, spezifische Produktrisiken, zeitliche oder finanzielle Vorgaben oder sonstige Einschränkungen.

Testüberwachung und -steuerung  

Im Verlaufe des Testprojekts müssen die tatsächlichen Aktivitäten überwacht und mit den geplanten Aktivitäten verglichen werden. Bei Abweichungen müssen steuernde Maßnahmen ergriffen werden, um sicherzustellen, dass die Ziele des Projekts erreicht werden können. Zur Überwachung und Steuerung werden typischerweise der Status und Fortschritt der Tests, der gefunden Fehler, der abgedeckten Produktrisiken und/oder der erreichten Produktqualität herangezogen.

Testanalyse

In der Testanalyse wird identifiziert, WAS zu testen ist. Dazu werden z.B. die verfügbaren Spezifikationen analysiert und bewertet und die zu testenden (und auch die nicht zu testenden) Leistungsmerkmale des Softwaresystems identifiziert und priorisiert.

Testentwurf

Im Testentwurf wird festgelegt, WIE getestet werden soll. Um die in der Testanalyse identifizierten Leistungsmerkmale prüfen zu können, werden geeignete Testfälle entworfen und priorisiert. Weiterhin werden erforderliche Testdaten sowie die benötigte Testumgebung identifiziert und entworfen.

Testrealisierung

Die Testrealisierung stellt sicher, dass alles, was für die Testdurchführung erforderlich ist, vollständig erstellt ist. Dies beinhaltet die Auswahl und Priorisierung der durchzuführenden Testfälle sowie die Bereitstellung der erforderlichen Testdaten und Testinfrastruktur.

Testdurchführung

Bei der Ausführung der Testfälle werden die erwarteten Ergebnisse mit den tatsächlichen Ergebnissen verglichen, die Ergebnisse der Ausführung werden geeignet protokolliert. Abweichungen zwischen dem erwarteten und tatsächlichen Verhalten werden dokumentiert und bewertet. Sofern es sich dabei um Fehler handelt, müssen diese durch einen Entwickler behoben werden und durch einen erneuten Test sichergestellt werden, dass dieser Fehler nicht mehr auftritt. Sofern das Softwareprodukt geändert wird (z.B. durch Fehlerbehebung) muss außerdem sichergestellt werden, dass es durch Änderungen nicht zu unerwünschten Seiteneffekten kommt.

Testabschluss

Am Ende des Testprojekts werden die Testergebnisse gesammelt und konsolidiert und es muss sichergestellt werden, dass alle Testaktivitäten abgeschlossen wurden. Weiterhin können Erfahrungen aus dem Projekt gesammelt werden und als Verbesserungsmaßnahmen für die Zukunft geplant werden.

Die Arbeitsergebnisse im Testprozess

Mit den Aktivitäten sind häufig bestimmte Arbeitsergebnisse verbunden, auch diese können in Form und Umfang sehr unterschiedlich ausfallen. Sie können z.B. als umfangreiche und schwergewichtige Dokumente oder leichtgewichtig mit Hilfe geeigneter Werkzeuge dokumentiert werden.

Typische Arbeitsergebnisse eines Testprojekts sind z.B.

  • Testkonzepte (die Dokumentation und Kommunikation der Ergebnisse der Testplanung)
  • Testbedingungen (die zu testenden Leistungsmerkmale)
  • Testfälle (die Anweisungen zur Prüfung der Testbedingungen)
  • Testablauf (die Auswahl und Priorisierung der Testfälle)
  • Testausführungsplan (die zeitliche Planung der Testdurchführung)
  • Testdaten, Testumgebung und Testinfrastruktur
  • Testfortschrittsbericht und Testabschlussbericht
  • Fehlerbericht

Die Rollen im Testprozess

Für die Aktivitäten sind i.d.R. unterschiedliche Rollen zuständig. Planung, Überwachung, Steuerung und Abschluss liegen in der Verantwortung eines Testmanager, die anderen Aktivitäten liegen in der Verantwortung der Tester. Die Rolle des Testers kann dabei in weitere, spezialisierte Rollen verfeinert werden, z.B. Testautomatisierer, Testadministrator, Testdatenspezialist.