Modellbasiertes Testen (englisch model-based testing, MBT) ist ein Oberbegriff für die Nutzung von Modellen zur Automatisierung von Testaktivitäten und zur Generierung von Testartefakten im Testprozess. Darunter fällt insbesondere die Generierung von Testfällen aus Modellen (z. B. unter Verwendung der UML), die das Sollverhalten des zu testenden Systems beschreiben.
Hauptziel ist es, nicht nur die Durchführung von Tests (siehe Testautomatisierung), sondern schon deren Erstellung zu (teil-)automatisieren. Man verspricht sich davon Transparenz und Steuerbarkeit in der Testfallentstehung, wodurch der Testprozess wirtschaftlicher und die Testqualität personenunabhängiger gestaltet werden kann.
Beim MBT wird die zu testende Software oder ihre Umgebung (z. B. in Form von Nutzungsprofilen) oder eben der Test selbst als Verhaltens- und/oder Strukturmodell dargestellt. Roßner unterscheidet folglich zwischen
im MBT-Einsatz.[1]
Systemmodelle beschreiben Anforderungen an das Softwaresystem und können in Form von Analyse- oder Design-Modellen vorliegen. Sie fokussieren im Allgemeinen nicht den Test und beinhalten deshalb insbesondere keine Testdaten (im Sinne einer Stichprobe aus allen möglichen Eingabedaten in das System). Folglich kann eine Generierung auf solchen Modellen maximal zu abstrakten Testfällen (das heißt ohne Angabe konkreter Werte für Testdaten) führen.
Testmodelle können aus vorhandenen Systemmodellen entstehen, bieten aber mehr Möglichkeiten für den Test. Sie beschreiben den Test eines Systems und bilden Testentscheidungen, die ein Tester vielleicht nur „im Kopf“ gefällt hat, explizit ab. So können in ihnen nicht nur Abläufe von Testschritten, sondern Testdaten, Prüfschritte und ggf. Testorakel modelliert werden. Als Folge wird es möglich, aus ihnen nicht nur abstrakte, sondern konkrete, ja sogar vollständige und ausführbare Testfälle zu generieren. Verwendet man in Testmodellen eine schlüsselwortbasierte Notation für Testschritte (siehe Keyword-Driven Testing), können sogar automatisiert ausführbare Testfälle entstehen.
Testmodelle setzen aber bei den Testern Kenntnisse in der Erstellung von Modellen voraus. Das Vorhandensein dieser Fähigkeit kann entscheidend für den Erfolg einer MBT-Einführung sein.
Je nachdem, welche Modellkategorien zum Einsatz kommen und welche Rolle die Modelle im modellbasierten Testprozess spielen, kann man von unterschiedlichen Ausprägungen und Reifegraden von MBT sprechen. Roßner definiert die folgenden:[1]
Je nachdem, welche Modelle Grundlage der Testgenerierung sein sollen und wie weit die Generierung reichen soll, ist der Einsatz von kommerziellen Generatoren oder die Eigenentwicklung eines Generators vorzusehen. Eine Übersicht über kommerzielle MBT-Werkzeuge ist zu finden bei H. Götz.[2] Ebenfalls findet man darin folgende Taxonomie für MBT-Werkzeuge:
Eine andere und komplexere Taxonomie ist zu finden bei M. Utting.[3]
In der Regel wird es nötig sein, die Testabdeckung beim Generiervorgang steuern zu können. Typischerweise finden hierbei die aus den White-Box-Test-Verfahren bekannten graphenbasierten Abdeckungsmaße Verwendung (siehe Kontrollflussorientierte Testverfahren), aber es sind auch andere Abdeckungsstrategien denkbar (z. B. aufgrund von Risikoinformationen im Modell).
Vor der Generierung ist es i. A. unverzichtbar, nicht nur den Generator zu testen, sondern die zu verarbeitenden Modelle geeigneten QS-Maßnahmen zuzuführen. Dazu zählen z. B. Reviews, werkzeuggestützte Prüfungen gegen Metamodelle oder Model Checking.
Ein Werkzeug, welches die Beschreibung eines Modells, dessen graphische Darstellung als Ablaufdiagramme bis hin zur Implementierung und Ausführung von Testfällen ermöglicht, ist Spec Explorer von Microsoft, welches als kostenfreies Add-on für Visual Studio angeboten wird.[4]
Im Bereich der modellbasierten Ergebnisermittlung ("Testorakel") gibt es regelbasierte Ansätze, die die Fallbearbeitung erleichtern sollen. RapidRep