418
8 Test
Definition 8.2: Fehler werden redundant genannt, wenn sie das beobachtbare Verhalten des Systems nicht beeinflussen.
Die Fehlersimulation erfordert die Simulation des Systems für alle im Fehlermodell möglichen Fehler und für eine möglicherweise große Menge an unterschiedlichen Eingabemustern. Dementsprechend ist Fehlersimulation ein extrem zeitaufwendiger Vorgang. Zur Beschleunigung wurden daher verschiedene Verfahren vorgeschlagen.
Ein solches Verfahren bezieht sich auf Fehlersimulation auf Gatterebene. In diesem Fall sind die internen Signale einzelne Bits. Dies ermöglicht die Abbildung
eines Signals auf ein einzelnes Bit eines Maschinenworts eines Simulationsrechners. UND- und ODER-Maschinenbefehle können damit verwendet werden, um
Boolesche Netzwerke zu simulieren. Damit würde aber nur ein einzelnes Bit pro
Maschinenwort verwendet werden. Die Effizienz wird durch parallele Fehlersimulation verbessert.
Definition 8.3: Fehlersimulation heißt parallele Fehlersimulation, wenn n > 1
verschiedene Testmuster gleichzeitig simuliert werden, wobei n die Länge eines
Bitvektors ist, der als Datentyp von der simulierenden Maschine unterstützt wird.
Die Werte jedes der n Testmuster werden auf eine unterschiedliche Bitposition im Maschinenwort abgebildet. Die Ausführung derselben Menge an UND- und
ODER-Befehlen simuliert dann das Verhalten des Booleschen Netzwerks für n Testmuster anstelle von nur einem Muster. AVX-Befehle (siehe Seite 170) sind für diese
Simulation sehr hilfreich.
8.3.3 Fehlerinjektion
Für reale Systeme kann Fehlersimulation zu zeitaufwendig sein. Wenn echte Systeme
verfügbar sind, kann stattdessen Fehlerinjektion zum Einsatz kommen. Bei der Fehlerinjektion werden real existierende Systeme modifiziert und der Gesamteinfluss
auf das Systemverhalten überprüft. Fehlerinjektion beruht nicht auf Fehlermodellen
(auch wenn sie zum Einsatz kommen können). Daher hat die Fehlerinjektion das Potential, Fehler zu erzeugen, die von einem Fehlermodell nicht vorhergesagt worden
wären. Wir unterscheiden zwischen zwei Arten der Fehlerinjektion:
• lokale Fehler innerhalb des Systems und
• Fehler in der Umgebung (Verhalten, das nicht der Spezifikation entspricht: beispielsweise können wir die Reaktion des Systems testen, wenn es außerhalb der
vorgesehenen Temperatur- oder Strahlungsbereiche betrieben wird).
Für die Fehlerinjektion kommen verschiedene Methoden zum Einsatz:
• Fehlerinjektion auf Hardwareebene: Beispiele sind Manipulation von Signalpegeln an Kontakten, elektromagnetische und nukleare Strahlung und
8 Test
Definition 8.2: Fehler werden redundant genannt, wenn sie das beobachtbare Verhalten des Systems nicht beeinflussen.
Die Fehlersimulation erfordert die Simulation des Systems für alle im Fehlermodell möglichen Fehler und für eine möglicherweise große Menge an unterschiedlichen Eingabemustern. Dementsprechend ist Fehlersimulation ein extrem zeitaufwendiger Vorgang. Zur Beschleunigung wurden daher verschiedene Verfahren vorgeschlagen.
Ein solches Verfahren bezieht sich auf Fehlersimulation auf Gatterebene. In diesem Fall sind die internen Signale einzelne Bits. Dies ermöglicht die Abbildung
eines Signals auf ein einzelnes Bit eines Maschinenworts eines Simulationsrechners. UND- und ODER-Maschinenbefehle können damit verwendet werden, um
Boolesche Netzwerke zu simulieren. Damit würde aber nur ein einzelnes Bit pro
Maschinenwort verwendet werden. Die Effizienz wird durch parallele Fehlersimulation verbessert.
Definition 8.3: Fehlersimulation heißt parallele Fehlersimulation, wenn n > 1
verschiedene Testmuster gleichzeitig simuliert werden, wobei n die Länge eines
Bitvektors ist, der als Datentyp von der simulierenden Maschine unterstützt wird.
Die Werte jedes der n Testmuster werden auf eine unterschiedliche Bitposition im Maschinenwort abgebildet. Die Ausführung derselben Menge an UND- und
ODER-Befehlen simuliert dann das Verhalten des Booleschen Netzwerks für n Testmuster anstelle von nur einem Muster. AVX-Befehle (siehe Seite 170) sind für diese
Simulation sehr hilfreich.
8.3.3 Fehlerinjektion
Für reale Systeme kann Fehlersimulation zu zeitaufwendig sein. Wenn echte Systeme
verfügbar sind, kann stattdessen Fehlerinjektion zum Einsatz kommen. Bei der Fehlerinjektion werden real existierende Systeme modifiziert und der Gesamteinfluss
auf das Systemverhalten überprüft. Fehlerinjektion beruht nicht auf Fehlermodellen
(auch wenn sie zum Einsatz kommen können). Daher hat die Fehlerinjektion das Potential, Fehler zu erzeugen, die von einem Fehlermodell nicht vorhergesagt worden
wären. Wir unterscheiden zwischen zwei Arten der Fehlerinjektion:
• lokale Fehler innerhalb des Systems und
• Fehler in der Umgebung (Verhalten, das nicht der Spezifikation entspricht: beispielsweise können wir die Reaktion des Systems testen, wenn es außerhalb der
vorgesehenen Temperatur- oder Strahlungsbereiche betrieben wird).
Für die Fehlerinjektion kommen verschiedene Methoden zum Einsatz:
• Fehlerinjektion auf Hardwareebene: Beispiele sind Manipulation von Signalpegeln an Kontakten, elektromagnetische und nukleare Strahlung und
