This post gives definition of oracle, a mechanism that could help the software tester whether a program has passed or failed a test. The answer is aligned with Black Box Software Testing Foundations course (BBST) created by Rebecca Fiedler, Cem Kaner and James Bach.
An oracle is a mechanism for determining whether a program passed or failed a test.
Let’s check the English dictionary:
[mechanism] noun - a natural or established process by which something takes place or is brought about
The most known mechanism is set of software requirements.
An oracle is a reference program. If you gave same inputs to the software under test and the oracle, you can tell whether the software test passed by comparing its results to the oracle's.
[reference] noun - the sending of a matter for decision or consideration to some authority.
SUT – system under test
Reference oracle – program that tester use as authority for SUT behaviour.
Comparator – computer or human tester that compares SUT and reference oracle behaviour
Assumptions in both oracle definitions are wrong, consequences is that we have NON TESTABLE programs.