Fault Injenction: Einfach automatisiert

Automatische Fault Injection in Tessy 4.1

Razorcat schließt diese Lücke mit einer neuen Funktion für die Verwaltung und Implementierung von automatisierten Fault Injections, integriert in der neuen Version 4.1 des zertifizierten Unit- und Integrationstestwerkzeugs Tessy. Die neue Fault-Injection-Funktion verwaltet komfortabel alle Fehlerinjektionen und instrumentiert den Quellcode automatisch. Der Testingenieur kann innerhalb von Tessy flexibel bestimmen, ob Testfälle mit einer Fault Injection durchgeführt werden oder nicht. Die Instrumentierung kann jederzeit abgeschaltet werden, somit ist die gleiche Sicherheit wie bei der Analyse der Anweisungsüberdeckung über die Testergebnisse gewährleistet. Die Positionen der Fault Injection werden von Tessy bei einer Quellcodeänderung berücksichtigt und in einer Analyse der Programmstruktur automatisch an die entsprechenden Stellen im Quellcode dynamisch gesetzt. Die Tessy-Coverage-Viewer-Perspektive zeigt das Flow Chart der Funktion und markiert die Programmablaufpfade in den Farben rot und grün. Noch nicht durchlaufene Codebereiche erhalten eine rote Markierung und sind so einfach zu identifizieren. Parallel dazu wird für eine schnelle Analyse der korrespondierende Quellcode angezeigt. Wurde ein Programmpfad nicht ausgeführt, kann der Testingenieur am entsprechenden Pfad des Flow Charts einen Code von Tessy automatisch instrumentieren und so für den Test eine Fehlersituation herbeiführen. Bild 1 zeigt die Analyse der Anweisungsüberdeckung in der Coverage-Viewer-Perspektive von Tessy für das obige Beispiel. Bei diesem Handler einer Zustandsmaschine hat der Testingenieur die Möglichkeit im Flow Chart, am default case des switch-Statements einen benutzerdefinierten Code von Tessy automatisch instrumentieren zu lassen, z.B. um den Wert der Zustandsvariable eState zu verändern. Der zu instrumentierende Code wird in einem Dialogfeld eingegeben. Die Fault Injection schreibt im vorliegenden Beispiel den ungültigen Wert 0xFF in die Zustandsvariable eState, sodass der default-Pfad in Zeile 20 ausgeführt und der Aufruf des Error Handlers in Zeile 21 erfolgt.

Im Dialogfenster Edit Fault Injection (Bild 2) wird der zu instrumentierende Code eingegeben. Tessy analysiert, welche vorhandenen und ausgeführten Testfälle das betroffene switch-Statement erreichen und schlägt diese Testfälle für die Anwendung der Fehlerinjektion vor. Im vorliegenden Beispiel wurde Testfall 2 ausgewählt. Tessy erstellt nun mit der eingegeben Fault Injection eine Kopie des Testfalls 2 und erzeugt Testfall 5. Der neue Testfall 5 bekommt die Eigenschaft Fault Injection und wird hervorgehoben. Nachdem der Name des Testfalls 5 angepsst und der Test erneut durchgeführt wurde, wird die Anweisungsüberdeckung zu 100 Prozent erreicht. Da nach der erneuten Testdurchführung alle Pfade erreicht wurden, sind ebenso alle Pfade im Flow Chart der Coverage-Viewer-Perspektive grün dargestellt; der für die Fault Injection ausgehende default-Pfad erhält als Kennzeichen ein blaues Dreieck. In der Test-Items-Ansicht erhalten die Icons der Testfälle mit der Eigenschaft Fault Injection zusätzlich das gleiche Dreieck, in unserem Beispiel ist dies der Testfall 5.

Weitere Fehlersituationen, wie Sicherheitsüberprüfungen z.B. Read after Write oder das Beenden von Endlosschleifen, sind mit der Fault-Injection-Funktionalität nun einfach zu realisieren. Tessy verwaltet alle Fehlerinjektionen und trägt diese bei einer Testdurchführung automatisiert ein. Liegt eine neue Version des Quellcodes vor, analysiert Tessy diese neue Version und setzt die Fault Injection automatisch an die richtige Stelle. Dabei verbleibt die Instrumentierung, wie bei der Anweisungsüberdeckung, nicht im Quellcode und kann bei der Testdurchführung eingestellt werden. Die automatisch generierten Testergebnisberichte enthalten zusätzliche Informationen über die Verwendung von Fault Injections. Eine weitere Iteration durch den Entwicklungsprozess ist somit nicht mehr notwendig und die Unit Tests lassen sich in einem Arbeitsprozess vollständig erstellen, um – ohne weiteren Zeit- und Kostenaufwand – eine 100-prozentige Anweisungsüberdeckung zu erreichen.

 Tessy Coverage-Viewer-Perspektive (Bild: Razorcat Development GmbH)

Bild 1: Tessy Coverage-Viewer-Perspektive (Bild: Razorcat Development GmbH)

 Dialog Edit Fault Injection (Bild: Razorcat Development GmbH)

Bild 2: Dialog Edit Fault Injection (Bild: Razorcat Development GmbH)

 Mit der Fault Injection ist 100% Anweisungsüberdeckung erfüllt (Bild: Razorcat Development GmbH)

Bild 3: Mit der Fault Injection ist 100% Anweisungsüberdeckung erfüllt (Bild: Razorcat Development GmbH)

Autor: Thomas Dirsch,
Razorcat Development GmbH
www.razorcat.com

Seiten: 1 2Auf einer Seite lesen

Ausgabe:
Razorcat Development GmbH
www.razorcat.com

Das könnte Sie auch Interessieren