../../icons/Logo.png


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
als der Vorgang des Prüfens des Softwareprodukts.
Verifizierung
als der Vorgang der Feststellung der Konformität des Softwareprodukts mit seiner Spezifikation.
Validierung
als der Vorgang der Akzeptanz des vorliegenden Softwareprodukts.

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].

Test.png

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.

Attention sticker Bedeutung der Symbole:
Aktivitaet.png
Eine Aktivität
Artefakt.png
Ein Artefakt
Startknoten.png
Ein Startknoten
Endknoten.png
Ein Endknoten
Uebergang.png
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.

Validierung.png

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.

Referenzen

[3]
Matt Stephens, Doug Rosenberg: Design Driven Testing: Test Smarter, Not Harder, New York 2010