Context: Although testing can determine the correctness of software under the assumption of some specific hypotheses (see hierarchy of testing difficulty below), testing cannot identify all the defects within software. Instead, it furnishes a criticism or comparison that compares the state and behavior of the product against oracles—principles or mechanisms by which someone might recognize a problem. These oracles may include (but are not limited to) specifications, contracts, comparable products, past versions of the same product, inferences about intended or expected purpose, user or customer expectations, relevant standards, applicable laws, or other criteria.

Question: What can testing not completely find?
Answer: all the defects

Question: While looking for bugs, what else can testing do?
Answer: furnishes a criticism or comparison

Question: What does the software compare during testing against?
Answer: oracles—principles or mechanisms

Question: What make up the oracle during testing?
Answer: specifications, contracts, comparable products, past versions

Question: Testing can identify all the defects within what?
Answer: Unanswerable

Question: While looking for bug, what can testing not do?
Answer: Unanswerable

Question: What are some things oracles include and are limited to?
Answer: Unanswerable

Question: What does the software contrast during testing against?
Answer: Unanswerable