Der Fehlerbegriff
Anhand der Anforderungen und weiteren Informationen wird die Testbasis bestimmt, welche das erwartete Verhalten beschreiben und als Grundlage für die Entscheidung dient, ob korrektes oder fehlerhaftes Verhalten vorliegt.
Ein Fehler ist somit eine festgestellte Abweichung zwischen dem festgelegten Sollverhalten und dem beobachteten Istverhalten. Solche Fehler entstehen nicht durch Alterung oder Verschliess, sondern sind vom Zeitpunkt der Entwicklung an Teil der Software, auch wenn sie erst später entdeckt werden.
Wird die Fehlfunktion für den Anwender oder Tester sichtbar, spricht man von einer Fehlerwirkung (engl. failure). Zwischen Ursache, die ihren Ursprung im Fehlerzustand (engl. fault) der Software hat, und dem Auftreten der Fehlerwirkung muss unterschieden werden.
Ein Fehlerzustand kann durch andere Fehlerzustände in der Software kompensiert werden, was als Fehlermaskierung bezeichnet wird. Durch die Korrektur eines maskierenden Fehlers können bisher verborgene Fehlerzustände an den Tag treten. Ein Fehlerzustand kann erst verspätet oder andernorts in der Software zu einer Fehlerwirkung führen, etwa bei der Verfälschung gespeicherter Daten.
Fehlerzustände entstehen durch die Fehlhandlung einer Person (engl. error) und können verschiedene Gründe haben:
- Unvollkommenheit des Menschen
- hohe Komplexität von Aufgaben, Architektur, Design und Code
- hoher Zeitdruck
- Missverständnisse und Fehlinterpretationen der Anforderungen
- mangelnde Erfahrung oder Ausbildung der Beteiligten
- Ablenkung, Unkonzentriertheit und Müdigkeit
Eine Fehlhandlung einer Person führt zu einem Fehlerzustand im Programmcode, der zu einer Fehlerwirkung in der Software führt, die durch das Testen aufgezeigt werden soll.
Wird beim Testen eine Fehlerwirkung festgestellt, ohne dass ein Fehlerzustand im Testobjekt vorliegt, spricht man von einem falsch positiven Ergebnis (engl. false positive result). Wird bei vorhandenem Fehlerzustand keine entsprechende Fehlerwirkung entdeckt, liegt ein falsch negatives Ergebnis (engl. false negative result) vor. Wird der Fehlerzustand durch eine Fehlerwirkung erkannt, ist das Ergebnis richtig positiv; liegt kein Fehlerzustand vor und wird auch keine Fehlerwirkung erkannt, ist das Ergebnis richtig negativ.
quadrantChart title Feststellung von Fehlern x-axis Fehlerzustand --> kein Fehlerzustand y-axis keine Fehlerwirkung --> Fehlerwirkung quadrant-1 falsch positiv quadrant-2 richtig positiv quadrant-3 falsch negativ quadrant-4 richtig negativ
Durch die Analyse der zugrundeliegenden Fehlhandlungen zu aufgedeckten Fehlerzuständen können Erkenntnisse gewonnen werden, womit der Entwicklungsprozess verbessert und die Wiederholung der Fehlhandlung vermieden werden kann.
Da zunächst nur die Fehlerwirkung und nicht der ihr zugrundeliegende Fehlerzustand bekannt ist, muss die fehlerhafte Stelle in der Software zuerst lokalisiert werden. Diesen Vorgang bezeichnet man als Debugging. Beim Testen werden also Fehlerwirkungen aufgedeckt, beim Debugging werden die zugrundeliegenden Fehlerzustände lokalisiert.
Durch die Behebung des Fehlerzustands wird die Qualität der Software verbessert ‒ sofern bei dieser Korrektur keine neuen Fehlerzustände eingebaut werden. Ein erneuter Test nach der Fehlerkorrektur wird als Fehlernachtest bezeichnet. Da bei der Fehlerkorrektur aber auch neue Fehler eingebaut werden können, die unter anderen Eingabekonstellationen eine Fehlerwirkung erzeugen, müssen noch weitere Tests durchgeführt werden, und nicht nur derjenige, der die Fehlerwirkung ursprünglich provozierte.
Fragen
- Was bedeuten die Begriffe Fehler, Fehlerwirkung und Fehlerzustand und wie hängen diese zusammen?
- Was ist eine Fehlermaskierung und was wäre ein mögliches Beispiel dafür?
- Wie gelangen Fehler in eine Software?
- In welche vier Kategorien können Ergebnisse beim Testen eingeteilt werden?
- Was ist die Ausgangslage und das Ziel beim Debugging?