Um zu zeigen, dass die zugrunde liegenden Systeme fehlerfrei sind Sie auch
a) Sie müssen nachweisen, dass sie einwandfrei sind
- Mathematischer Beweis
- Nur für Trivialprogramme realistisch möglich
b) Machen Sie einen ausführlichen Test
- Nur für Trivialprogramme und einige einfache Programme möglich
- Sobald ein Zeitglied in den Test eintritt, kann kein vollständiger Test durchgeführt werden, da die Zeit unbegrenzt aufgeteilt werden kann.
- Jenseits der trivialen Programme explodieren die möglichen Ausführungsoptionen exponentiell.
Beim Softwaretest wird der ausführliche Test nur zum Testen einiger einfacher Funktionen verwendet.
Beispiel: Sie möchten eine 8-stellige utf-8-Eingabe in einem Feld testen. Sie haben die Wahl, die Eingabe auf das 8-fache der maximalen Länge von utf-8 in Bytes zu beschränken, was 8 * 6 = 48 Bytes ergibt, um tatsächlich ein zu haben endliche Mengen von Möglichkeiten.
Sie könnten jetzt denken, dass Sie nur die 1.112.064 gültigen Codepunkte jedes der 8 Zeichen testen müssen , d. H. 1.112.064 ^ 8 (sagen wir 10 ^ 48) Tests (was schon unwahrscheinlich ist), aber Sie müssen tatsächlich jeden Wert jedes der 48 Bytes oder 256 ^ 48 testen, was ungefähr 10 ^ 120 ist, was der gleichen Komplexität wie Schach entspricht verglichen mit der Gesamtzahl der Atome im Universum von ungefähr 10 ^ 80.
Stattdessen können Sie in zunehmender Reihenfolge des Aufwands verwenden und jeder Test sollte alle vorherigen abdecken:
a) Testen Sie eine gute und eine schlechte Probe.
b) Codeabdeckung, dh. Versuchen Sie, jede Codezeile zu testen, was für die meisten Codes relativ einfach ist. Jetzt können Sie sich fragen, was die letzten 1% des Codes sind, die Sie nicht testen können ... Fehler, toter Code, Hardware-Ausnahmen usw.
c) Pfadabdeckung, alle Ergebnisse aller Zweige in allen Kombinationen werden getestet. Jetzt wissen Sie, warum die Testabteilung Sie hasst, wenn Ihre Funktionen mehr als 10 Bedingungen enthalten. Sie fragen sich auch, warum die letzten 1% nicht getestet werden können ... einige Zweige hängen von den vorherigen Zweigen ab.
d) Datentest, teste eine Anzahl von Proben mit Grenzwerten, gemeinsamen problematischen Werten und magischen Zahlen, Null, -1, 1, min +/- 1, max +/- 1, 42, rnd Werten. Wenn Sie dadurch keine Pfadabdeckung erhalten, wissen Sie, dass Sie nicht alle Werte in Ihrer Analyse erfasst haben.
Wenn Sie dies bereits tun, sollten Sie für die ISTQB-Grundlagenprüfung bereit sein.