Der Blätterkatalog benötigt Javascript.
Bitte aktivieren Sie Javascript in Ihren Browser-Einstellungen.
The Blätterkatalog requires Javascript.
Please activate Javascript in your browser settings.
06 2021 Elektronik 23 Entwicklungstools die Variable r1 range_start haben im zweiten Testfall den Wert 5 somit lautet die Entscheidung in der ersten ifAnweisung 5<5 was »falsch« ergibt In der Mutation lautet die Entscheidung 5<=5 was »wahr« bedeutet Deswegen liefert der zweite Testfall ein unerwartetes Ergebnis »no« anstelle des richtigen und erwarteten »yes« was den Mutanten tötet Testfall 4 sollte eigentlich die andere Mutation in der Entscheidung der zweiten if-Anweisung töten Das klappt aber nicht weil der Wert für v1 in Testfall 4 ungünstig gewählt ist Die Variable v1 hat den Wert 9 und r1 range_start+r1 range_len ergibt 5+2=7 Somit ist die Entscheidung in der zweiten if-Anweisung im Original 9>7 und im Mutanten 9>=7 was beides mal »wahr« ergibt Also liefern Original und Mutant in beiden Fällen das korrekte Ergebnis »no« Somit bestehen sowohl Original als auch Mutant den vierten Testfall der Mutant wird nicht getötet Testfall 2 und Testfall 4 haben deswegen unterschiedliche Qualität weil Testfall 2 einen Grenzwert Boundary Value verwendet und Testfall 4 nicht Testfall 2 verwendet nämlich mit dem Wert 5 den Startwert des Bereichs der bei 5 startet und die Länge 2 hat und somit die Werte 5 und 6 enthält Testfall 4 verwendet mit dem Wert 9 für die Variable v1 keinen Grenzwert des Bereichs Dies demonstriert wieso Grenzwerte gute Testdaten sind und wieso Standards zur Entwicklung von sicherheitskritischer Software Grenzwerte als Testdaten empfehlen Beispielsweise empf iehlt die IEC 61508 2 die Methode Boundary Value Analysis in Tabelle B 2 und B 3 ihres Teils 3 In beiden Tabellen ist diese Methode empfohlen für Safety Integrity Level SIL 1 und besonders empfohlen für SIL 2 bis 4 Auch die ISO 26262 3 nennt als Methode 1c in der Tabelle 8 von Teil 6 Analysis of Boundary Values als Vorgehensweise wie man zu Testdaten für den SoftwareUnit-Test kommen kann Die Methode ist empfohlen für ASIL Aund besonders empfohlen für ASIL Bbis D Der Mutationstest kann auch Testfallmengen bewerten Eine Testfallmenge heißt adäquat wenn sie alle Mutanten tötet Je kleiner eine adäquate Testfallmenge ist um so besser Damit lassen sich auch Testfall-Konstruktionsverfahren beurteilen Endlosschleifen und Abstürze bei Mutationen Durch Mutationen können auch Endlosschleifen entstehen Das bedeutet dass ein Test nicht zum Ende kommt Damit eine solche Mutation nicht den gesamten Prozess zum Erliegen bringt überwacht TESSY die Ausführungszeit Überschreitet die Ausführungszeit Fachbegriffe bei Mutationstests ➔ Fehlermodell Fault Model Die Kategorien der möglichen Mutationen Diese sind natürlich bei einem C-Programm als Testobjekt anders als zum Beispiel bei einem Zustandsdiagramm ➔ Fehlereinpflanzung Error Seeding In der IEC 61508 heißt der Mutationstest Fehlereinpflanzung beziehungsweise Error Seeding ➔ Kopplungseffekt Coupling Effect Wird ein Mutant mit einer einzelnen Mutation durch eine Testfallmenge entdeckt so werden auch mehrfache Mutationen entdeckt ➔ Starker Mutationstest Strong Mutation Test Der Mutant wird nur von außen betrachtet Black Box Er wird nur durch einen Testfall entdeckt der nach außen ein anderes Ergebnis liefert als das Original ➔ Schwacher Mutationstest Weak Mutation Test Ein Testfall sorgt im Innern des Mutanten für ein anderes Verhalten als beim Original Dieses andere Verhalten wird jedoch nicht nach außen sichtbar ➔ Adäquater Testfall adäquate Testfallmenge Ein Testfall heißt adäquat wenn er einen Mutanten tötet oder wenn die Mutation äquivalent war Eine Testfallmenge heißt adäquat wenn sie alle nichtäquivalenten Mutanten tötet ➔ Mutation Score Das Verhältnis der getöteten Mutanten zur Zahl aller Mutanten üblicherweise in Prozent angegeben ➔ Fehlerinjektion Fault Injection In nicht mutiertem Testobjekt werden Fehler von außen injiziert um die Robustheit zu prüfen einer Mutation die Ausführungszeit ohne Mutation um das Zehnfache bricht TESSY die Testdurchführung ab Endlosschleife beziehungsweise Timeout tötet die Mutation Ergibt sich durch eine Mutation ein Absturz des Testobjekts tötet dies ebenfalls die Mutation Bild 6 zeigt wie die Funktion count mit einem Testfall getestet wird der den Eingabewert 10 für den Parameter x hat und mit dem Return-Wert 1 das korrekte Ergebnis liefert Dieser Testfall tötet alle vier auf der linken Seite von Bild 6 angegebenen Mutationen Die dritte Mutation von <= zu >= wird allerdings nicht wie üblich durch Fehlschlagen des Bild 5 So wird der Mutation Score in TESSY dargestellt Bild Hitex