As the number of possible tests for even simple software components is practically infinite, all software testing uses some strategy to select tests that are feasible for the available time and resources. As a result, software testing typically (but not exclusively) attempts to execute a program or application with the intent of finding software bugs (errors or other defects). The job of testing is an iterative process as when one bug is fixed, it can illuminate other, deeper bugs, or can even create new ones.

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 oraclesprinciples 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.

Based on the article and the following list of answers, write a list of questions.

1. possible tests
2. software bugs
3. no
4. it can illuminate or create new ones
5. no
6. it furnishes a criticism
7. yes
8. more than eight
9. execute a program
10. iterative
1. What is infinite?
2. What do these tests find?
3. Once it's fixed is everything good to go?
4. Why not?
5. Can testing identify everything?
6. What did it do instead?
7. Are contracts included in the oracles?
8. How many things were oracles?
9. What did software testing typically attempt to do?
10. What type of process is the job?