Taxonomy for test oracles

Independent generation of expected results

Validate algorithms

Useful for exhaustive testing

Long execution times

Expensive implementation

True oracle

Verify randomly a sample

Useful for limitated inputs

Stochastic

May miss errors

Heuristic oracle

Reproduce values based on algorithms

Easier than True Oracle

Useful to validate algorithms

Sampling

Verify a selected set of samples

Used in boundary testing

Very fast verification

May miss errors

Consistent

Used in regression test

Can generate and verify large amount of data

Uses previous runs for the next test