Testen

Software-Integrationstest am Beispiel Tessy

Seite: 2/2

Anbieter zum Thema

Im unteren Teil von Bild 3 („Variables“) sind die Variablen der Komponente dargestellt, auf die in einem Szenario zugegriffen werden kann. Die Pfeile geben an, ob eine Variable nur Eingabe, nur Ausgabe, oder beides sein kann. Nun werden die gewünschten Testfälle (oder Szenarien) formuliert. Dies geschieht in Tessy per Drag & Drop von Interface-Elementen in das Zeitraster. Bei Bedarf können Werte für Funktionsparameter oder Variable angegeben werden.

Bild 4: Szenario (links) mit Ergebnis (rechts). Das Szenario 4 testet, dass nach Schließen der Tür die Innenraumbeleuchtung angeht und spätestens nach 5 s wieder ausgeht, wenn die Zündung nicht eingeschaltet wird. (Archiv: Vogel Business Media)

Das Szenario in Bild 4 testet, dass nach Schließen der Tür die Innenraumbeleuchtung angeht und spätestens nach 5 s wieder ausgeht, wenn die Zündung nicht eingeschaltet wird. Vor dem ersten Aufruf von tick() wird init() aufgerufen, um einen definierten Zustand für den Test herzustellen (in unserem Fall Tür offen, Zündung aus und Innenraumbeleuchtung aus). Bei 30 ms der simulierten Zeit wird die Funktion set_sensor_door() der Komponente mit dem Parameterwert „closed“ aufgerufen. Dadurch erfährt die Komponente, dass die Fahrzeugtür geschlossen wurde.

Dies ergibt zwei erwartete Ereignisse, die ebenfalls im Szenario angegeben sind: Zunächst soll sofort die Innenraumbeleuchtung angehen, d.h. LightOn() soll aufgerufen werden. Die Zeitbedingung steht in den eckigen Klammern. Weiterhin soll die Innenraumbeleuchtung nach spätestens 5 s wieder ausgehen, d.h. LightOff() soll zwischen 30 und 5030 ms absoluter Szenariozeit aufgerufen werden.

Im Szenario in Bild 4 ist der Abstand zwischen zwei Aufrufen der Taktgeberfunktion tick() mit 10 ms vorgegeben worden. Tessy kann somit Zeitbedingungen (in Sekunden) automatisch in die entsprechende Anzahl von Aufrufen der Funktion tick() umrechnen. Das ist besonders nützlich, wenn sich der Zeitabstand im Laufe der Tests ändert, z.B. von 10 auf 20 ms, weil 10 ms für die zu erledigenden Aufgaben vielleicht nicht mehr ausreichen. Nach Umstellung der Zeitbasis adjustiert Tessy die entsprechende Anzahl von tick()-Aufrufen automatisch auf die neuen Gegebenheiten. Zeitangaben im Szenario beziehen sich also immer auf natürliche Zeitangaben der Spezifikation und nicht auf implementierungsabhängige Werte.

Testszenario: Zündung an, Beleuchtung aus?

Bild 5: Weiteres Szenario (links) und Ergebnis (rechts). Das Szenario testet, ob die Innenraumbeleuchtung ausgeht, wenn die Zündung eingeschaltet wird. (Archiv: Vogel Business Media)

Das Szenario in Bild 5 (links) testet, ob die Innenraumbeleuchtung ausgeht, wenn die Zündung eingeschaltet wird. Der Aufruf der Funktion init() unterbleibt hier; er wird durch Tessy nachgebildet. Tessy kann (alle) Variablen einer Komponente vor/während/nach dem Test auf einen beliebigen Wert setzen bzw. prüfen. Dadurch könnte ein Testfall mit einem unspezifizierten/unzulässigen Zustand beginnen; oder man könnte die Funktionalität der Funktion init() testen.

Bild 6: Das Werkzeug Tessy ermittelt die durch die Ausführung der Szenarien erreichte Codeüberdeckung (Archiv: Vogel Business Media)

Das Einschalten der Zündung wird durch Setzen der Variablen „sensor_ignition“ angezeigt. Ansonsten soll nach Schließen der Tür die Innenraumbeleuchtung sofort angehen und nach Einschalten der Zündung sofort wieder ausgehen. Tessy ermittelt die durch die Ausführung der Szenarien erreichte Codeüberdeckung (Bild 6).

Durch den zeitbasierten Komponententest stellt Tessy eine einfache und komfortable Möglichkeit für den Integrationstest von eingebetteter Software bereit. Herausragend ist die Möglichkeit, zeitliche Bedingungen zu formulieren, und zwar auf dem gleichen Abstraktionsniveau wie in der Spezifikation. Ein Hardware-in-the-loop-System oder Hardware sind dazu nicht notwendig.

*Frank Büchner studierte Informatik an der Technischen Hochschule Karlsruhe. Seit mehreren Jahren widmet er sich dem Thema Testen und Software-Qualität und gibt sein Wissen regelmäßig in Fachartikeln und auf Seminaren weiter. Momentan arbeitet Frank Büchner als Senior Test Engineer bei Hitex Development Tools in Karlsruhe. Kontakt: frank.buechner@hitex.de.

Artikelfiles und Artikellinks

Link: Tessy

(ID:300982)