Reifegrade des Komponententests

R 2.0.0

Allgemeine Beschreibung

Art und Umfang der Testaktivitäten, die im Zusammenhang mit einem bestimmten Baustein durchgeführt werden, sagen etwas über die "Reife" eines Projektvorgehens aus. Probieren Sie doch mal, sich anhand unseres Fragebogens selbst einzustufen! Wir definieren für jeden Baustein vier unterschiedliche Reifegrade und geben Ihnen Hinweise darauf, auf welcher "Stufe" Sie sich gerade befinden, bzw. geben Ihnen Hilfestellung durch welche konkreten Maßnahmen Sie eine höhere Stufe, einen höheren Reifegrad also, erreichen können.

Reifegrad "Initial"

Der Testprozess besteht aus Ad-hoc-Aktivitäten.

Kontrollpunkte

  • Ad-Hoc Tests finden statt und sind stark von den Fähigkeiten einzelner Entwickler abhängig.

  • Unit-Tests werden durch die Entwickler unabhängig voneinander entwickelt und ausgeführt.

  • Eine Verwaltung und Speicherung der Tests erfolgt nicht.

  • Komponententests erfolgen isoliert auf Entwicklungsumgebungen

  • Häufig entstehen sie erst, nachdem der Code bereits geschrieben wurde

  • Nur rudimentäre Dokumentation der Ergebnisse, Eingangskriterien für die nächste Teststufe (Integrationstest) unklar

Verbesserungsvorschlag

Um auf den kontrollierten Reifegrad im Komponententest zu gelangen, müssen die Kontrollpunkte dieses Grades erfüllt sein. Diese umfassen insbesondere die Planung, Design und Ausführung der Tests:

  • Starten Sie frühzeitig mit der Testvorbereitung.

  • Etablieren Sie formale Testtechniken wie White-Box-Techniken, um explizit Anweisungen im Programmcode zu testen.

  • Definieren Sie klare Ziele und Metriken und bestimmen messbare Eingangskriterien für den folgenden Integrationstest.

  • Messen und dokumentieren Sie die Ergebnisse der Testdurchführung für die Projektsteuerung

  • Ermitteln Sie den Abdeckungsgrad für den Test der Komponenten.

  • Stellen Sie die Bereitstellung geeigneter Testumgebungen sicher.

  • Verwenden Sie Tools zur Automatisierung der Testfälle.

Reifegrad "Kontrolliert"

Alle wichtigen Aktivitäten des Testprozesses werden geplant und durchgeführt.

Die Testobjekte und die konkreten Testziele werden in diesem Reifegrad definiert und dementsprechend werden Zeit und Ressourcen eingeplant. Testfortschritte werden anhand von Abdeckungsgraden gemessen.

Mehrwert

  • Transparente Ergebnisse durch die Testdokumentation helfen der Projektsteuerung

  • Klare Vorgaben bezüglich der Eingangskriterien zur nächsten Teststufe

  • Abdeckungsgrade für die Komponenten sind bekannt

Kontrollpunkte

  • Neben den Ad-Hoc-Testmethoden werden auch formale Testtechniken angewendet, sodass eine Abdeckung zur Spezifikation nachzuvollziehen ist.

  • Testtechniken für das formale Testen werden eingeführt sowie deren Anwendung und Vorteile deutlich gemacht.

  • Werkzeuge für Komponententests sind vorhanden und für alle Entwickler/Tester wieder verwendbar (Testmittel).

  • Testfälle werden auf Basis der Spezifikation und den Anforderungen erstellt und dokumentiert.

  • Testausführung wird protokolliert, ggf. mit einem Report zur Abdeckung. Um dies zu gewährleisten, muss die Testautomatisierung vorangetrieben werden.

  • Die Module/Einheiten sollen unabhängig voneinander getestet werden → eigene Testumgebungen.

Verbesserungsvorschlag

  • Verwenden Sie ein Testwerkzeug, welches die bidirektionale Rückverfolgbarkeit über einheitliche IDs zwischen Testfällen und Anforderungen ermöglicht.

  • Planen Sie Schulungen von Testtechniken ein, damit alle Tester, Entwickler mit den gleichen Mitteln und Wissen arbeiten können.

  • Beziehen Sie eine Risikobetrachtung zur Ermittlung der Komplexität der Komponenten in die Tests ein

  • Setzen Sie Review Methoden für den Testfall Quellcode bzw. die Testfallspezifikation ein.

  • Setzen Sie Mock-Objekte ein, um noch nicht realisierte Objekte im Test zu simulieren.

Reifegrad "Effizient"

Die Aktivitäten des Testprozesses werden so aufeinander abgestimmt, dass es zu einem günstigeren Kosten-Nutzen-Verhältnis kommt.

Mehrwert

  • Die Komponententests bringen detaillierte Rückverfolgbarkeit der Implementierung.

  • Fehler werden durch Komponententest bereits während der Entwicklung erkannt, was zur Reduzierung der Fehlerkosten führt, da für nachfolgende Teststufen weniger Testaufwand anfällt.

  • Erhöht die Qualität des Programmcodes des Testobjektes (Feature-Implementierung) (Codeüberdeckung).

  • Es finden Reviews des Testfallquellcodes bzw. der Testfallspezifikation statt.

  • Testtiefe abhängig von der Risikoanalyse (hohes Risiko, höhere Komplexität → mehr Tests, geringeres Risiko → weniger Tests)

Kontrollpunkte

  • Eine Risiko-Analyse hat stattgefunden – d.h. man kennt die Bedeutung und Komplexität des Systems / der Komponente

  • Die Tests werden unterschiedlich in Tiefe und Abdeckung durchgeführt. Das hängt von der Risiko-Analyse ab (hohes Risiko, höhere Komplexität → mehr Tests, geringeres Risiko → weniger Tests).

  • Es werden eine oder viele formale und Ad-Hoc-Testtechniken angewendet, angepasst an die erforderliche Testtiefe.

  • Für das Nachtesten von Fehlern findet eine gut begründete Wahl statt zwischen "Einzeltest" und "Kompletttest".

  • Es finden Reviews der Implementierung und/oder der Tests statt.

  • Testwerkzeuge werden eingesetzt, mit denen schneller und besser getestet werden kann

  • Testauswertung in einem Bericht (Nachverfolgbarkeit)

  • Funktions- und Objektvirtualisierung (Mock-Objekt) werden verwendet, um die Abdeckung zu erweitern und Fehlerbedingungen zu testen

Verbesserungsvorschlag

  • Stellen Sie eine Teststrategie auf, in der für jede Komponente eine Einschätzung der Wichtigkeit und der Testumfang beschrieben wird.

  • Um die Gefahr der Betriebsblindheit zu vermeiden, können Sie die Komponententests von anderen Entwicklern/Testspezialisten schreiben bzw. durchführen lassen.

  • Wenden Sie Pair-Programming/-Testing an (zwei Entwickler arbeiten am Test gleichzeitig)

  • Führen Sie die testgetriebenen Entwicklung (Test Driven Development, TDD), als Designstrategie ein.

  • Sie setzt die Erstellung der Tests als Ausgangspunkt für ein iteratives Vorgehen ganz an den Anfang, um die folgende Softwareentwicklung zu steuern.

  • Etablieren Sie einen kontinuierlichen Verbesserungsprozess, um den erreichten Zustand zu erhalten und an Änderungen anzupassen

  • Durch wiederholte Reviews und Retrospektiven sorgen Sie für kontinuierliche Prüfung des Vorgehens.

  • Ständige Weiterbildung und Schulung des Test- und QS-Teams

Reifegrad "Optimierend"

Der erreichte Zustand des Testprozesses wird gepflegt, analysiert und sich ändernden Erfordernissen stetig angepasst.

Mehrwert

  • Dieser Reifegrad stellt sicher, dass zu immer gleichen Bedingungen höchste Qualität produziert wird.

  • Ressourcen (Zeit, Geld, Personal) werden demzufolge optimal eingesetzt

  • Produkt- und Projektrisiken werden minimiert und sind berechenbar

  • Nachhaltigkeit durch verbesserte Wiederverwendung bei geringstmöglichen Kosten

  • "Lernende Organisation

Kontrollpunkte

  • Dokumentation soll in einem Anforderungsmanagement-Werkzeug erstellt werden.

  • Die Verwendung der Werkzeuge für Komponententests werden regelmäßig auf ihre Wirksamkeit überprüft und verbessert.

  • Möglichst hoher Grad an automatisierten Komponententests erreichen.

  • Die Komponententests sind gut kommentiert.

  • Review der Implementierung findet statt.

  • Testauswertung in einem Bericht (Nachverfolgbarkeit).

  • Es findet nach jeder Auslieferung eine „Lessons-learned“-Runde statt um Verbesserungen am Komponententest durchzuführen.

Quellen

  • TPI NEXT - Geschäftsbasierte Verbesserung des Testprozesses; van Ewijk, Linker, van Oosterwijk, Visser, de Vrie, 1. Auflage 2011