Was ist ein test von oracle und wozu dient Sie?
Ich nicht wirklich verstehen, das Konzept eines software testen von oracle. Es sagt:
Einer oracle ist ein Mechanismus für die Bestimmung, ob das Programm bestanden wurde oder nicht, ein test.
Betrachten Sie den folgenden code:
//class that should be tested
public int sum(int a, int b) {
return a + b;
}
//test class
static Main tester = new Main();
@Test
public void testSum() {
assertEquals("2 + 3 is 5", 5, tester.sum(2, 3));
}
Die Klasse, die getestet werden sollen, immer wird die Summe von 2 zahlen.
Gebe ich als parameter 2 und 3, und erwarten 5. 2 und 3 werden addiert und im Vergleich zu den erwarteten Wert (5). In diesem Fall ist der test erfolgreich.
Wie genau kann ein Orakel mir hier helfen? Ist eine oracle-beteiligten in diesem Beispiel?
- Ich bin daran interessiert zu hören, über diese, wie auch, da der Begriff eine test-Orakel hat immer fiel mir als eine vage Vorstellung. Meinem Verständnis nach (die falsch sein kann, daher mein Interesse) ist, dass ein test-runner ist ein Beispiel für einen test oracle. (In deinem Fall
tester
Objekt.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem test-Orakel ist eine Quelle der Informationen, ob die Ausgabe von einem Programm (oder Funktion oder Methode) korrekt ist oder nicht.
Einen test oracle könnte geben Sie die korrekte Ausgabe für alle möglichen Eingabe-oder nur für bestimmte Eingabe. Könnte es nicht angeben, die tatsächlichen output-Werten, aber nur mit Einschränkungen auf Sie.
Oracle könnte
Wenn nicht vage, das Konzept ist zumindest sehr breit.
Einer oracle ist kein test-runner, aber ein test-runner könnte die Verwendung einer oracle als Quelle für die korrekte Ausgabe zu denen zu vergleichen, die system-unter-test-Ausgabe, oder als eine Quelle von Einschränkungen vor, die zur Bewertung der SUT Ausgabe.
In Ihrem Beispiel, Sie verwendet Ihre persönlichen Fähigkeiten, die zur Durchführung der Algorithmus der addition, wie Sie Ihre oracle. Stattdessen könnte man eine andere implementation des Algorithmus als oracle:
assertEquals("2 + 3", 2 + 3, tester.sum(2, 3));
Lassen Sie mich stellen Sie sich der oracle-Frage auf diese Weise: wie können wir überprüfen, dass das Programm gibt die richtige Antwort?
Für diese Funktion, können wir leicht überprüfen Sie die Antwort mit dem folgenden pseudocode (Sorry, es ist nicht C++.):
Diese oracle verwendet Subtraktion die Funktion überprüft werden. Dies ermöglicht es Millionen oder Milliarden von tests ausgeführt werden, ohne menschliche Anstrengung.