Test oracle
device used in software testing

In software testing, a test oracle (or just oracle) is a provider of information that describes correct output based on the input of a test case. Testing with an oracle involves comparing actual results of the system under test (SUT) with the expected results as provided by the oracle.
The term "test oracle" was first introduced in a paper by William E. Howden. Additional work on different kinds of oracles was explored by Elaine Weyuker.
An oracle can operate separately from the SUT, accessed at test runtime, or it can be used before a test is run with expected results encoded into the test logic.
However, method postconditions are part of the SUT, as automated oracles in design by contract models.
Determining the correct output for a given input (and a set of program or system states) is known as the oracle problem or test oracle problem, which some consider a relatively hard problem, and involves working with problems related to controllability and observability.
Categories
A research literature survey covering 1978 to 2012 found several potential categories of test oracles.
Specified
A specified oracle is typically associated with formalized approaches to software modeling and software code construction. It is connected to formal specification, model-based design which may be used to generate test oracles, state transition specification for which oracles can be derived to aid model-based testing and protocol conformance testing, and design by contract for which the equivalent test oracle is an assertion.
This brief starts where responsible research should: with the source description of “Test oracle” as device used in software testing. Everything that follows is an evidence route, not borrowed authority.
Why this record matters
The subject matters to the science & nature register because the source frames it as device used in software testing. Its deeper value depends on whether names, dates, institutions and citations support that framing.
Stable identifiers, scientific names and standards terminology offer the best bridge between this overview and specialist evidence. The source revision retrieved here is dated Sep 16, 2026. The linked authority identifier is Q2892946. None of the 0 selected statements returned an explicit reference. The first chronological checks are 1978 and 2012.
Scientific names, classifications and consensus can change while older terminology persists in catalogues and historical literature. The source lead contains qualifying language; that uncertainty should survive quotation, summary and reuse. Authority statements aid reconciliation but still require their own references, qualifiers and ranks to be checked.
How to read it
Check terminology, classification and the date of the cited evidence. Scientific names and technical consensus can change while older records retain historical value.
- Current terminology
- Classification context
- Finding cited technical literature
Primary datasets, specimen catalogues, standards bodies and the most recent peer-reviewed literature.
Three-step research path
- Establish the record: confirm the title “Test oracle”, its source revision and the description used here.
- Expand the search: follow Test oracle primary sources, Test oracle archive and Test research across catalogues and specialist indexes.
- Test the account: compare the strongest cited source with the responsible institution’s current record and note any disagreement.
Questions for further research
- Which source most directly establishes the central claim about “Test oracle”?
- Is the terminology current, historical or disputed?
- Which observation, specimen, dataset or publication supports the account?
Search terms from this dossier
This entry incorporates text from “Test oracle” on English Wikipedia. Contributors are listed in the page history. Text is available under the Creative Commons Attribution-ShareAlike 4.0 License. Selected authority identifiers and statements are retrieved from Wikidata under CC0; their references and qualifiers remain part of the verification path.