Testfall
Die Testfälle beinhalten vorrangig die Eingaben und die darauf erwarteten Ergebnisse. Darüber hinaus können sie auch die für die Testdurchführung notwendigen Aktionen (Testschritte) und Vor- und Nachbedingungen enthalten. Zum Entwurf der Testfälle kann der Tester, abhängig von der Testbasis und der gewählten Testvorgehensweise, unterschiedliche Testentwurfsverfahren einsetzen (siehe Abschnitt 5.3).
Testumgebung
Insbesondere eingebettete Systeme werden immer für den Einsatz in einem spezifischen Kontext geschaffen. Steht die reale Testumgebung (z.B. das reale Fahrzeug) nicht zur Verfügung, benötigt der Tester eine virtuelle Testumgebung (siehe Kap. 4). Diese simuliert die reale Umgebung des Testobjekts. Über diese ist es dem Tester möglich, das Testobjekt zu stimulieren und dessen Verhalten zu beobachten. Da die Testumgebung wiederum abhängig von der Testart (funktional/nicht funktional) und der Teststufe ist, muss der Tester die daraus resultierenden Anforderungen an die Testumgebungen spezifizieren.
Testrealisierung
Während der Testrealisierung erstellt oder aktualisiert der Tester die Testumgebungen gemäß den Anforderungen und stellt die für die Testdurchführung benötigten Testfälle zusammen. Die Testrealisierung ist abgeschlossen, sobald alles für die Durchführung der Tests bereit ist.
Testablauf
Beim Zusammenstellen der Testfälle muss der Tester neben den neu durchzuführenden Tests auch Fehlernach- und Regressionstests berücksichtigen. Die ausgewählten Testfälle bringt er im Anschluss in Testabläufen in die gewünschte Reihenfolge. Dabei berücksichtigt er neben den Abhängigkeiten zwischen den Testfällen untereinander auch deren Priorität und eine effiziente Reihenfolge. Ist ein Testablauf für eine automatisierte Testdurchführung vorgesehen, erstellt der Tester dafür ein entsprechendes Testskript.
2.2.3Testmanagement
Zum Testmanagement gehören sowohl die Testplanung, die Testüberwachung und -steuerung als auch der Testabschluss. Aufgabe des Testmanagements ist die zielgerichtete Koordination aller Testaktivitäten und die Verwaltung der dabei erzeugten Artefakte. Hierzu werden die Testaktivitäten dahingehend ausgerichtet, die Projektziele (z.B. Qualitätsziele) unter Berücksichtigung der verfügbaren Ressourcen (Zeit und Budget) bestmöglich zu erreichen.
In eher traditionellen Entwicklungsmodellen (wie dem V-Modell) obliegen diese Aufgaben häufig einem Testmanager (oder: Testleiter, Testkoordinator). In leichtgewichtigen, agilen Entwicklungsmodellen (wie Scrum) übernimmt hingegen das Entwicklungsteam einen Großteil dieser Aufgaben. In der Praxis sind auch Mischformen anzutreffen (z.B. im Rahmen eines hybriden Projektmanagements), wo sich ein Testmanager und ein agiles Team die Testaufgaben teilen.
Testplanung
Testkonzept
Im Rahmen der Testplanung definiert der Testmanager (bzw. das Entwicklungsteam) die Testziele und legt die Testvorgehensweise im Testkonzept fest. Sowohl die Testziele als auch die Testvorgehensweise sind abhängig vom Projektkontext. So wird er beispielsweise bei der Überarbeitung eines Fahrzeugmodells (mit vielen Gleichteilen) eine andere Vorgehensweise wählen als bei einer vollständigen Neuentwicklung (mit völlig neuen Konzepten und Technologien).
Die Testplanung ist eine fortlaufende Aktivität, da der Testmanager seine Vorgehensweise mit fortschreitendem Projekt kontinuierlich verfeinert und an sich ändernde Rahmenbedingungen anpasst. Das Feedback hierzu erhält er über eine kontinuierliche Überwachung der Testaktivitäten.
Testüberwachung und -steuerung
Testfortschrittsbericht
In der Testüberwachung vergleicht der Testmanager (bzw. das Entwicklungsteam) fortlaufend den tatsächlichen mit dem geplanten Testfortschritt. Hierzu nutzt er Metriken zur Überwachung, die er zuvor im Testkonzept definiert hat. Diese wertet er aus und konsolidiert sie im Testfortschrittsbericht (auch Teststatusbericht genannt). Im Rahmen der Testüberwachung ergreift er im Falle einer Abweichung Maßnahmen, die zum Erreichen der Testziele und Testendekriterien führen.
Testabschluss
Testabschlussbericht
Sind die Testendekriterien5 erreicht, kann der Testmanager (bzw. das Entwicklungsteam) einzelne Testaktivitäten oder auch den gesamten Testprozess abschließen. Im Rahmen des Testabschlusses sammelt er die Daten aus allen beendeten Testaktivitäten und konsolidiert diese im Testabschlussbericht. Der Testabschluss kann am Ende
eines Projekts,
eines Projektmeilensteins (z.B. im Rahmen einer Softwarefreigabe, siehe Abschnitt 2.3),
einer Teststufe (z.B. im Rahmen einer Systemabnahme) oder
einer Iteration im Projekt (z.B. als Sprint-Review bei Scrum) erfolgen.
Zum Testabschluss gehören auch die Archivierung bzw. die Übergabe aller Testmittel6, die zum Testabschluss (und damit zu einer Freigabeempfehlung, siehe Abschnitt 2.3) geführt haben. Im Falle einer Schadensersatzforderung ist es damit einem Unternehmen möglich, auch Jahre nach dem Inverkehrbringen, ein früheres Testergebnis zu belegen.
Darüber hinaus nimmt das Testteam im Rahmen des Testabschlusses häufig an einer Rückschau (Retrospektive) auf die zurückliegenden Testaktivitäten teil. Während im Testabschlussbericht der Fokus auf dem Testobjekt liegt, steht hier der Testprozess selbst im Mittelpunkt: Welche Lessons Learned und Best Practices lassen sich für zukünftige Testaktivitäten ableiten?
2.3Testen im Systemlebenszyklus
Jedes System, unabhängig von Art und Größe, hat einen Lebenszyklus. Dieser erstreckt sich in sechs Phasen von der Konzeption bis hin zur Außerbetriebnahme (siehe Abb. 2–2). Der Produktentstehungsprozess (PEP) deckt dabei die Phasen von der Konzeption bis zur Produktion ab. In der Phase der Entwicklung finden die wesentlichen Tätigkeiten des Testers statt. Doch auch an den meisten anderen Phasen ist der Tester beteiligt.
Abb. 2–2 Phasen des Systemlebenszyklus nach ISO 24748-1 [ISO 24748]
Konzeption
Am Anfang des Systemlebenszyklus steht die Phase der Konzeption. In dieser Phase werden Marktstudien bewertet, vorläufige Systemanforderungen erhoben und erste Lösungsansätze entworfen. Bereits in dieser frühen Phase legt der Testmanager seine Testvorgehensweise fest. Darüber hinaus wirkt er an der Priorisierung und Planung der Implementierungsreihenfolge der Funktionen mit, zum Beispiel wenn eine Funktion Voraussetzung