Test design strategies are chosen that are appropriate to the type of application under test and the types of bugs sought. Each strategy has a distinct scope, assumptions and limitations.
There are two fundamental strategic issues that software test designs must accommodate: one is the problem of defining when a test has shown a correct result or has shown a fault (this is known as the oracle problem); the other is the problem that it is seldom reasonable to test the entire range of possible inputs and outputs for any given real world software application. The standard approach to this test scope coverage problem is to use equivalence classes and domain analyses to narrow the range of test case inputs and outputs to a representative and manageable number.
There are some prevalent misconceptions about software test design techniques in the literature and in common use. Most often the misconceptions arise from a simplified understanding of the general problem and structure of testing software. A basic conceptual model of the testing enterprise should help remedy most such problems.