A form of testing in which the results produced by the program under test are compared with those produced by a test oracle under the same conditions. The oracle is a program whose behaviour is known to be correct and thus can be used to predict the output of any other program supposed to satisfy the same specification. Although test oracles can be expensive to produce, for some applications they may be available as precedent versions of the program under test, or as programs known to perform the expected tasks, although in a different platform or language. In the latter case, it might be necessary to ensure that the tests performed on both platforms are equivalent.