Wie Modellbasiertes Testen funktioniert und welche Fallstricke bei der Einführung vermieden werden müssen erläutert Stephan Christmann
Foto: Software Quality Lab
Der Autor Stephan Christmann ist Bereichsleiter Service und Testcenter bei Software Quality Lab. Das Unternehmen veranstaltet von 14. – 16. Jänner die Fachkonferenz „Software Quality Days 2014“ mit dem Themenschwerpunkt „Model Driven Approaches for Advanced Software Engineering“.
Modellbasiertes Testen (MBT) ist eine sehr neue und spannende Technologie, die Effizienz und Effektivität im Testen zu verbessern. Grob beschrieben, werden dabei formale Modelle der Domäne (Anm. der Redaktion laut Wikipedia: abgrenzbares Problemfeld oder bestimmter Einsatzbereich für Software) zum Beispiel in der Sprache UML erstellt, aus denen dann Tests – manuell oder automatisiert – abgeleitet werden. Als Beispiel sei hier ein Zustandsautomat einer Software-Oberfläche genannt, mit dem die Zustände der Oberfläche (Knoten) und die Änderungen aufgrund von Aktionen des Benutzers (Übergänge, Transitionen zwischen den Knoten) dargestellt werden. Ein Testfall ist dann durch einen Pfad vom Startpunkt bis zum Endpunkt des Zustandsautomaten definiert. Folgt ein Tester diesem Pfad, führt er dabei die entsprechend Aktionen durch (manueller Test). Traversiert ein Programm diesen Graphen und erzeugt dabei Code für die automatische Ausführung von Testfällen, spricht man von Testautomatisierung.
Die Vorteile dieses Ansatzes sind dabei u.a.
• Klare Beschreibung der Anforderungen und verbesserte Kommunikation der Beteiligten bei der Erstellung der Modelle und durch dessen graphische Darstellung.
• Hohe Testabdeckung
• Schnelle Erstellung von sehr vielen Testfällen zur Testautomatisierung.
• Schnelles Reagieren auf Änderungen der Anforderungen.
In der Folge will ich einige Fallstricke aufzeigen, die es zu umrunden gilt, wenn man diese neue Technologie einführen oder probieren möchte. Dies ist insbesondere deshalb wichtig, da durch einen falschen Ansatz gegebenenfalls große Potenziale schon in der Frühphase verschenkt werden und eine sehr innovative und hilfreiche Technologie nur deshalb verworfen wird, weil sie falsch eingeführt wird.
„Silverbullet“ Denken und überzogene Erwartungen
Wenn eine Technologie einen Hype erfährt, wird oftmals überzogen bewertet, was ihr Potential verspricht. Natürlich verbessert modellbasiertes Testen die Effizienz und Effektivität. Es ist jedoch falsch zu glauben, dass nun andere Testmethoden irrelevant sind. MBT ist vielmehr ein weiterer Baustein, mit dem das Testen ergänzt und verbessert werden kann. Auch manuelles, exploratives Testen ist nach Einführung eines MBT-Ansatzes weiterhin relevant. Zum Beispiel: Wenn Modelle als Kommunikationsmittel verwendet werden, wird den Testern die Fachdomäne näher gebracht, sodass sie ihre Tests besser ausrichten können. Doch auch wenn MBT zur Automatisierung verwendet wird, unterstützt es das manuelle Testen statt es zu ersetzen, denn es hilft Tests in der Breite besser abzudecken, sodass der Tester mehr zeitlichen Spielraum hat, die Tests in der Tiefe auszuführen.
Umfeld und Prozesse
Je mehr Potenzial eine Technologie hat, Prozesse zu verbessern, desto ernsthafter muss ihr ein Rahmen vorgegeben werden, um die anfänglich notwendige Lernkurve zu stemmen. Dies sollte vom Management her unterstützt werden.
Notwendig ist auch eine vernünftige Definition des Ziels, weshalb MBT überhaupt eingesetzt werden soll. Nur weil eine Technologie neu ist, muss sie nicht immer zielführend sein.
Werkzeuge
Leider sieht man immer noch zu oft, dass die Werkzeugfrage viel zu früh und falsch gestellt wird. Werkzeuge sollten sich nach den internen Bedürfnissen und Anforderungen derjenigen richten, die sie verwenden und nicht nach Prozessen, die sie vorschreiben. Leider fehlt gerade im MBT oftmals das Verständnis, was ein gutes MBT-Werkzeug ausmacht. Ist gegebenenfalls schon ein Modellierungswerkzeug im Hause, wird es gleich wiederverwendet. Das Problem dabei ist, dass ein Modellierungswerkzeug, das relativ gut zu reinen Dokumentationszwecken geeignet ist (das Modell steht weitgehend in den Köpfen des Teams fest und muss lediglich nur noch „gezeichnet“ und dargestellt werden) sich noch lange nicht für einen Modellierungsprozess eignet. In letzterem ist nämlich die beste Lösung noch lange nicht bekannt. Viel wird probiert, geändert, gelöscht und neu gemacht werden, und das sollte ein gutes Tool unterstützen und nicht blocken. Um die richtigen Werkezeuge zu verwenden ist daher ein gut aufgesetzter Evaluierungsprozess notwendig, der idealerweise mit professioneller Hilfe geschieht, damit Anforderungen richtig erhoben, Optionen richtig bewertet werden und letztlich die richtige Auswahl getroffen wird.
Modellierung
Der Prozess der Modellierung wird leider oft falsch eingeschätzt. Oftmals wird er mit reinem Nachzeichnen von Lösungen gleich gesetzt. Modelle stellen immer eine Reduktion von komplexen Informationen dar. Daher sollte das Ziel sein, entsprechende Expertisen im Team aufzubauen (was auch das Berufsbild des Testers aufwertet), damit diese Reduktion richtig und zielführend von allen durchgeführt wird. Die notwendige intensive Diskussion der Beteiligten mit den Fachexperten fördert ein besseres Problemverständnis, nicht zuletzt auch der Tester.
Ich hoffe, dass die hier behandelten Aspekte dazu beitragen, dass diese Technologie so in die Praxis umgesetzt wird, dass vermeidbare Hindernisse nicht gleich den gesamten Ansatz zum Scheitern bringen. Ein Rat am Schluss: Es ist immer besser in kleinen Schritten vorzugehen. Kleine Modelle fördern anfangs die Nachvollziehbarkeit und helfen aus Fehlern zu lernen. Auch stellt sich viel schneller ein Erfolgserlebnis ein, was die Motivation bei allen Beteiligten fördert.