Test, Verifikation und Validierung
An dieser Stelle wird ein Aspekt der Softwareentwicklung behandelt, der von allen Beteiligten als wichtig angesehen, aber ebenso stiefmütterlich behandelt wird: Das Testen des Softwareprodukts.
Gemeint ist der Nachweis, dass das Softwareprodukt seiner Spezifikation entspricht. Genauer gefasst:
Test
Ein Test, der im Wesentlichen ein Ausprobieren des Softwareprodukts ist, ist alles andere als ein professionelles Überprüfen des Einhaltens der Spezifikation. Es bedarf einer definierten Vorbereitung und nachvollziehbaren Durchführung des Tests.
An dieser Stelle soll keineswegs auf das Testen selbst, wie Test spezifiziert werden und wie getestet wird eingegangen werden. Es wird vielmehr betrachtet, wie Tests in den Entwicklungsprozess eingebunden werden können. Eine interessante Sicht des Testens beschreiben Matt Stephens, Doug Rosenberg in "Design Driven Testing" [3].
Bild 6: Entwicklungsprozess mit explizitem Test
Zunächst wird der Test anhand der Spezifikation und des Designs entwickelt und ein Testplan erstellt. Er enthält eine Reihe von Testfällen, die die Beschreibungen in der Spezifikation dicht abdecken sollen. Daraufhin wird der Test, soweit erforderlich, implementiert. Das kann parallel zur Entwicklung des Softwareprodukts erfolgen. Das Ergebnis ist sozusagen die Testprozedur. Sie ist keinesfalls nur eine mehr oder weniger automatisch ablaufende Folge von Testprogrammen, sondern kann und wird in der Regel auch von Menschen durchzuführende Aktionen enthalten.
Die Durchführung des Test der vorliegenden Version der Software erlaubt weder eine Anpassung des Produkts noch des Tests selbst. Es werden einfach nur Befunde geliefert, die nicht weiter analysiert werden. Die Analyse von Abweichungen wird in einer Iteration der Implementation oder gar des Designs vorgenommen. Diese Vorgehensweise ist sehr effizient, weil der Test relativ schnell und vollständig durchgeführt werden kann.
Eine Aktivität
Ein Artefakt
Ein Startknoten
Ein Endknoten
Ein Übergang
Verifikation und Validierung
Der Test selbst ist sozusagen die technische Durchführung einer Testprozedur. Ergebnisse werden nicht bewertet. Die Bewertung wird unabhängig vom Test vorgenommen.
Bild 7: Entwicklungsprozess Verifikation und Validierung
Die Testergebnisse werden hinsichtlich ihrer Relevanz und Korrektheit bewertet und festgestellt, in wie weit die Software "richtig" erstellt wurde. Vielfach wird dieser Vorgang der Verifikation auch als Testauswertung bezeichnet. Andererseits wird der Test auch als Teil der Verifikation verstanden.
Schließlich wird festgestellt, ob das Produkt möglicherweise mit Mängeln freigegeben werden kann: es wird validiert. Diese explizite Freigabe ist häufig nicht in die Prozesse für Softwareentwicklung aufgenommen.