Vorteile von Testfallgeneratoren in modellbasierten Entwicklungsprozessen

Mehr Qualität durch modellbasiertes Testen

28. April 2009, 12:35 Uhr | Wolfgang Hartig, Albert Habermann und Prof. Dr. Mottok
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Mehr Qualität durch modellbasiertes Testen

Sollen komplexe Funktionsmodelle schrittweise entwickelt und verifiziert werden, setzt dies effiziente Testmethoden voraus. In jedem Entwicklungsschritt ist zu prüfen, ob Fehler entstanden sind. Beim modellbasierten Testen generieren Testfallgeneratoren aus Funktionsmodellen automatisch Testfälle, die sich später automatisiert ausführen, auswerten und dokumentieren lassen.

Darüber hinaus stellt sich die Frage, wo der Einsatz automatisch generierter Testfälle sinnvoll ist und welche Vorteile sich daraus für die Entwicklung von eingebetteten Fahrzeugsystemen ergeben. Der neue Ansatz verwendet bei der iterativen Entwicklung der Funktionsmodelle die automatisch generierten Testfälle für Regressionstests. Zudem lassen sich die erzeugten Testfälle aus dieser Entwicklungsphase für spätere Testphasen im Entwicklungsprozess, zum Beispiel für Abnahmetests von Steuergeräten, wiederverwenden (Bild 1).

Testfallgeneratoren erleichtern Regressionstests

Die Definition der Anforderungen unterliegt oft Änderungen. Aufgedeckte Fehler in den Anforderungsdefinitionen werden korrigiert oder neue Funktionen hinzugefügt, die das zu entwickelnde System erweitern. Außerdem wird im weiteren Verlauf des Entwicklungsprozesses die Implementierung oftmals umstrukturiert oder vereinfacht – bei gleich bleibendem Funktionsumfang. Bereits entwickelte Funktionsmodelle werden an die neuen Gegebenheiten angepasst. Der Entwickler muss dabei sicherstellen, dass durch ein geändertes Funktionsmodell keine neuen Fehler oder unerwünschte Auswirkungen auf die Funktionsweise entstanden sind. Diese Anforderung lässt sich durch Anwendung von Regressionstests erfüllen [1].

Um dieses Ziel zu erreichen sind drei Schritte notwendig:

  • Eine geeignete Model-in-the-Loop-Testumgebung (MiL) für die Regressionstests wird entwickelt.
  • Testfälle in dieser MiL-Testumgebung werden automatisiert ausgeführt.
  • Regressionstests werden automatisiert ausgewertet.

Der wesentliche Punkt beim Regressionstest ist die Güte des Vergleichs eines modifizierten Funktionsmodells mit dessen Vorgängerversion. Ein Maß dafür ist die Code-Abdeckung, weswegen das Vergleichen verschiedener Versionen eines Funktionsmodells eine möglichst hohe Abdeckung erfordert. Bei anforderungsbezogenen Testfällen ist eine hohe Code-Abdeckung mit großem Aufwand verbunden, denn bei Abdeckungslücken müssen die entsprechenden Stellen analysiert und gegebenenfalls weitere anforderungsbezogene Testfälle manuell erstellt werden, bis die geforderte Code-Abdeckung erreicht ist.

Ausschließlich manuell erstellte Testfälle für den Regressionstest zu verwenden, ist daher nicht mehr empfehlenswert. Dieses Problem ist lösbar mit den neu auf dem Markt erhältlichen Testfallgeneratoren wie Simulink Design Verifier von The Mathworks oder Telelogic Rhapsody ATG von IBM. Das automatische Generieren der Testfälle erfolgt nach Vorgabe einer zu erreichenden Code-Abdeckung. Die Testfälle erhöhen folglich die Güte des Vergleichs. Zudem bieten die Werkzeuge oft gleichzeitig das automatische Generieren einer MiL-Testumgebung, das Ausführen der Testfälle sowie das automatisierte Erstellen eines Testreports. Daraus resultiert ein durchgängiger Arbeitsablauf mit kurzen Durchlaufzeiten.

Eine beispielhafte Umsetzung zeigt einen Regressionstest in einer Modelin-the-Loop-Testumgebung (Bild 2). Das Modellieren der Funktionen erfolgt in Simulink/Stateflow, während der Simulink Design Verifier die Testfälle generiert. Grundsätzlich lassen sich auch andere Modellierungswerkzeuge verwenden, solange für diese ebenfalls Testfallgeneratoren erhältlich sind.

Der Block Test Cases (Bild 2, links oben) enthält die automatisch generierten Testfälle und stimuliert das zu testende System Test Unit. In diesem Fall ist dies das modifizierte Funktionsmodell. Der Block Expected Results enthält die Referenzausgaben aus der Vorgängerversion dieses Funktionsmodells. Zu jedem Simulationsschritt werden im Block Regression Test Analysator die neu erzeugten Ausgaben des modifizierten Funktionsmodells mit den Referenzausgaben verglichen. Nach dem Testlauf erstellt ein Skript automatisch den Testreport und passt diesen einem gewünschten Ausgabeformat an. In diesem Fall entspricht das Ausgabeformat einem Testreport aus CANoe von Vector Informatik. Ergibt sich bei der Auswertung ein Unterschied in den Ausgaben, muss überprüft werden, ob der Unterschied gewünscht ist oder ob er durch einen Fehler bedingt aufgetreten ist.

Der gezeigte iterative Ansatz bietet eine effiziente Unterstützung bei der stetigen Verbesserung und Anpassung des Funktionsmodells an die Anforderungen. Die Qualität des Funktionsmodells steigt hiermit. Zudem wird in jedem Entwicklungsschritt nachgewiesen, dass keine neuen Fehler entstanden sind. Werden Funktionen nach diesem modellbasierten Ansatz entwickelt, so sind danach Testfälle verfügbar, die nicht nur zum Regressionstest für Funktionsmodelle, sondern auch für die späteren Testphasen wie dem Abnahmetest von Steuergeräten verwendet werden können.

93AH0202_af_02.jpg
Bild 2. Aufbau einer Model-in-the-Loop-Testumgebung für Regressionstests in Matlab/Simulink. Ein Skript erstellt Testreports und passt automatisch deren Ausgabeformat an.

  1. Mehr Qualität durch modellbasiertes Testen
  2. Mehr Qualität durch modellbasiertes Testen
  3. Wiederverwendung für Abnahmetests von Steuergeräten
  4. Literatur

Jetzt kostenfreie Newsletter bestellen!