- Schreibtischtest
-
Der Schreibtischtest ist ein Verfahren, das im Bereich der Softwareentwicklung verwendet wird, um Algorithmen oder Routinen auf Richtigkeit zu prüfen. Der Schreibtischtest wird nicht mit Hilfe eines Rechners durchgeführt sondern vielmehr im Kopf des Entwicklers. Dazu werden für einen deterministischen und terminierenden Programmablauf eine Eingabe- und eine mögliche Ausgabemenge festgelegt. Anschließend wird mit jedem Element der Eingabemenge durch schrittweises Durchrechnen die Korrektheit des Programmablaufs überprüft. Der gewählte Programmablauf verhält sich für das gewählte Eingabeelement genau dann korrekt, wenn das ausgegebene Element, also das Ergebnis, Teil der Ausgabemenge ist.
Die Tatsache, dass die Größe der Eingabemenge für einen beliebigen Algorithmus beliebig groß sein kann, z. B. eine Untermenge der natürlichen Zahlen, erfordert vom Entwickler für die Überprüfung der Korrektheit des daraus resultierenden Programms die schrittweise Durchrechnung mit allen Elementen der Eingabemenge. Gibt es für die Eingabemenge keine obere oder untere Schranke, dann kann der Schreibtischtest höchstens mit einigen plausiblen Eingaben zur Herbeiführung eines Verdachtsmoments auf Korrektheit des Programms dienen.
Voraussetzungen für den Schreibtischtest sind also ein deterministischer und terminierender Programmablauf, die Kenntnis über plausible und sinnvolle Eingabeelemente, und die Kenntnis der zu den Eingabeelementen passenden Ausgabeelemente um aus der jeweiligen Ausgabe auf die Richtigkeit schließen zu können. Das Ergebnis für die jeweilige Eingabe muss also bekannt sein.
Beispiel: Potenz
Zu folgender Pascal-Funktion soll ein Schreibtischtest durchgeführt werden:
1 function nHochM(n,m:integer); 2 var i:integer; 3 var produkt:integer; 4 begin 5 if m=0 then nHochM:=1 else 6 if m=1 then nHochM:=n else 7 begin 8 produkt:=n; 9 for i:=2 to m do 10 produkt:=produkt*n; 11 nHochM:=produkt; 12 end; 13 end;
Berechnung von 23:
Zeile i produkt Bedingung 5 false 6 false 8 2 9 2 2 true (Schleife wird ausgeführt) 10 2 4 9 3 4 true 10 3 8 9 3 8 false
Wikimedia Foundation.