The "oracle assumption" is the assumption that testers will (a) work out expected ourcomes in advance of test execution, as part of test case specification; and (b) avoid doing so by hand wherever possible.
The use of test oracles was defined by Beizer in Software Testing Techniques (1991). As Beizer observed, manually computing outputs is slow, clumsy, and error-prone, and was essentially the reason that computers were invented in the first place. An "oracle" is a resource which helps the tester to avoid the need for doing it by hand. Types of oracle in common use include:
* Existing test cases
* Old versions of the software being tested
* Models, such as formulae in spreadsheets or in other programs
* The test software itself, if all else fails (but this needs scrupulous accuracy in checking the result)