Each software module or system has an input domain from which test input data is selected. If a tester randomly selects inputs from the domain, this is called random testing. For example, if the valid input domain for a module is all positive integers between 1 and 100, the tester using this approach would randomly, or unsystematically, select values from within that domain; for example, the values 55, 24, 3 might be chosen. Given this approach, some of the issues that remain open are the following:
Are the three values adequate to show that the module meets its specification when the tests are run? Should additional or fewer values be used to make the most effective use of resources?
Are there any input values, other than those selected, more likely to reveal defects? For example, should positive integers at the beginning or end of the domain be specifically selected as inputs?
Should any values outside the valid domain be used as test inputs? For example, should test data include floating point values, negative values, or integer values greater than 100?
More structured approaches to black box test design address these issues.
Use of random test inputs may save some of the time and effort that more thoughtful test input selection methods require. However, the reader should keep in mind that according to many testing experts, selecting test inputs randomly has very little chance of producing an effective set of test data . There has been much discussion in the testing world about whether such a statement is accurate. The relative effectiveness of random versus a more structured approach to generating test inputs has been the subject of many research papers. Readers should refer to references [2-4] for some of these discussions. The remainder of this chapter and the next will illustrate more structured approaches to test case design and selection of inputs. As a final note there are tools that generate random test data for stress tests. This type of testing can be very useful especially at the system level. Usually the tester specifies a range for the random value generator, or the test inputs are generated according to a statistical distribution associated with a pattern of usage.