Zum Inhalt springen
SDETRole
SDETRole

Glossar · Testgrundlagen

Testorakel

Englisch: Test oracle

Auch genannt: Orakel, Orakelproblem, Oracle Problem

Definition

Die Wahrheitsquelle, mit der ein Test entscheidet, ob eine Ausgabe korrekt ist, etwa eine Spezifikation, eine Vorversion, ein Referenzmodell oder eine Regel.

Ein Testorakel ist alles, was Ihnen sagt, wie die richtige Antwort lautet. Ein Testlauf erzeugt eine Ausgabe; das Orakel ist der Mechanismus, der diese Ausgabe als bestanden oder nicht bestanden beurteilt. Meist ist es das im Testfall notierte erwartete Ergebnis, doch bei vielen Systemen ist es der schwierigste Teil des Testens, das erwartete Ergebnis überhaupt zu ermitteln. Diese Schwierigkeit heißt Orakelproblem.

Arten von Orakeln

  • Spezifiziertes Ergebnis. Eine Anforderung besagt, dass eine Bestellung über 200 $ mit 10 % Rabatt 180 $ ergibt. Die Assertion vergleicht mit diesem Wert.
  • Referenzimplementierung. Vergleich mit einer vertrauenswürdigen Alternative: einem früheren Release, der Berechnung eines Wettbewerbers oder einem einfachen, aber langsamen Algorithmus, der einen schnellen, optimierten überprüft.
  • Konsistenz und Eigenschaften. Sie kennen die genaue Ausgabe vielleicht nicht, aber Regeln, die sie erfüllen muss. Eine Sortierung muss dieselben Elemente in nicht absteigender Reihenfolge liefern; Kodieren und anschließendes Dekodieren muss die ursprüngliche Eingabe ergeben.
  • Gespeicherte Baseline. Snapshot- und visuelle Regressionstests behandeln eine früher freigegebene Ausgabe als korrekt.
  • Menschliches Urteil. Ein Tester entscheidet, ob ein Layout oder ein generierter Text akzeptabel ist. Flexibel, aber langsam und uneinheitlich.

Beispiel: ein eigenschaftsbasiertes Orakel

Sie können nicht für jede mögliche Eingabe einer Sortierfunktion die erwartete Ausgabe von Hand aufschreiben, aber Sie können Eigenschaften prüfen, die jedes korrekte Ergebnis hat:

function checkSorted(input: number[], output: number[]): boolean {
  const sameLength = input.length === output.length;
  const ordered = output.every((v, i) => i === 0 || output[i - 1] <= v);
  const sameItems =
    [...input].sort((a, b) => a - b).join(',') === output.join(',');
  return sameLength && ordered && sameItems;
}

Warum es wichtig ist

Ein Test ist nur so gut wie sein Orakel. Ein Test, der sich durch den Checkout klickt und nur prüft, dass kein Fehler erschienen ist, hat ein sehr schwaches Orakel: Er besteht auch dann, wenn der falsche Betrag abgebucht wird. Schwache Orakel sind ein Hauptgrund dafür, dass eine hohe Codeabdeckung keine gute Suite garantiert. Das Orakelproblem steht auch im Zentrum des Testens von KI-Systemen, deren Ausgaben variieren und bei denen Teams auf Golden Datasets, Bewertungsraster (Rubrics) oder ein zweites Modell als Richter setzen.

Tippen Sie, um SDETRole zu durchsuchen.

Volltextsuche mit Pagefind · läuft in Ihrem Browser Suchseite öffnen →