Simulation von Fehlersituationen: Fault Injection einfach automatisieren

Seite: 2/2

Anbieter zum Thema

Automatische Fault Injection und Fehlerinjektion in TESSY

Diese Lücke schließt eine automatische Fault Injection, ähnlich wie die Instrumentierung für die Analyse der Anweisungsüberdeckung. Dafür werden die Fehlerinjektionen in einem Testtool verwaltet. Dieses instrumentiert automatisch den Quellcode und erlaubt es dem Testingenieur individuell zu bestimmen, ob Testfälle mit einer Fault Injection durchgeführt werden oder nicht. Da die Instrumentierung abgeschaltet werden kann, ist die gleiche Sicherheit wie bei der Analyse der Anweisungsüberdeckung über die Testergebnisse gewährleistet. Alle Fault Injections werden von dem Testwerkzeug verwaltet und Testfälle mit einer Fehlerinjektion speziell gekennzeichnet. Automatisierte Testergebnisberichte dokumentieren alle Testeinstellungen und Ergebnisse.

Version 4.1 des Unit- und Integrationstestwerkzeugs TESSY von Razorcat enthält eine derartige neue innovative Funktion für die Verwaltung und Implementierung von automatisierten Fault Injections. 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.

Bildergalerie

In der TESSY „Coverage Viewer“-Perspektive wird das Flow Chart der Funktion dargestellt und in den Farben rot und grün die Programmablaufpfade markiert. Codebereiche, die noch nicht durchlaufen wurden, bekommen eine rote Markierung und sind einfach identifizierbar. Gleichzeitig wird der entsprechende Quellcode angezeigt, so dass die Gründe dafür leicht zu analysieren sind. Wurde ein Programmpfad nicht ausgeführt, so hat der Testingenieur am entsprechenden Pfad des Flow Charts die Möglichkeit, einen Code von TESSY automatisch zu instrumentieren, um die Fehlersituation für den Test herbeizuführen.

Folgendes Beispiel illustriert dies anhand des bereits oben diskutierten Codes: Es wurde ein Testfall für einen fehlerfreien Speicherzugriff erzeugt und durchgeführt. Die Analyse der Anweisungsüberdeckung wird in der „Coverage Viewer“-Perspektive von TESSY dargestellt (Bild 1). Bei diesem Speichertest hat nun der Testingenieur im Flow Chart, am linken Pfad des if-Ausdruckes die Möglichkeit, einen benutzerdefinierten Code von TESSY automatisch instrumentieren zu lassen, um z.B. den Speicher zu manipulieren. In einem Dialogfeld wird der zu instrumentierende Code eingegeben. Die Fault Injection ist hier eine Invertierung des Wertes im Speicher, so dass die Überprüfung in Zeile 7 die Fehlersituation bemerkt und die Zeile 9 mit dem Aufruf der Funktion errorHandler() ausgeführt wird.

Im Dialogfenster „Edit Fault Injection“ (Bild 2) wird der zu instrumentierende Code eingegeben. TESSY analysiert, welche vorhandenen und ausgeführten Testfälle den betroffenen if-Ausdruck erreichen und schlägt diese Testfälle für die Anwendung der Fault Injection vor. Im vorliegenden Beispiel wurde Testfall 1 ausgewählt. TESSY erstellt nun mit der eingegeben Fault Injection eine Kopie des Testfall 1 und erzeugt Testfall 2. Der neue Testfall 2 bekommt die Eigenschaft „Fault Injection“ und wird besonders dargestellt. Nachdem der Name und das zu erwartenden Testergebnis (return ist 0) des Testfalls 2 angepasst und der Test erneut durchgeführt wurde, wird die Anweisungsüberdeckung zu 100% erreicht.

Nach erneuter Testdurchführung werden im Flow Chart der „Coverage Viewer“-Perspektive nun alle Pfade grün dargestellt, der Pfad mit einer Fault Injection 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. Weitere Fehlersituationen, wie das Erreichen eines default-Pfades einer switch-Anweisung oder das Beenden von Endlosschleifen, sind auf diese Weise 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 nicht im Quellcode und kann bei der Testdurchführung eingestellt werden. Die 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 können in einem Arbeitsprozess vollständig erstellt werden, um eine 100% Anweisungsüberdeckung zu erreichen – dies spart Zeit und Kosten.

* Thomas Dirsch ist Senior Software Quality Consultant und Leiter der Niederlassung Waldbronn der Razorcat Development GmbH.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:45070688)