A good test is very likely to detect an error while an exhaustive testing of the program with various inputs is simply impossible. Therefore, the program is tested using only a small subset of all possible input data. Then, of course, everyone would like to choose the most suitable subset of input data to test a program (i.e., a subset with the highest probability of uncovering the most errors).
A correctly selected test for this subset must:
- reduce, by more than one, the number of other tests that must be written to achieve a pre-defined goal of “acceptable” testing;
- cover a significant part of other possible tests, which to some extent indicates the presence or absence of errors before and after applying this limited set of input values.
Software testing outsourcing is designed to save you the trouble of paying more for the same quality of work done to ensure successful releases.
These characteristics of the test, in spite of their seeming similarity, imply two different positions.
- Firstly, each test should include as many different input conditions as possible, in order to minimize the total number of required tests.
- Secondly, it is necessary to try to break up the input of the program into a finite number of equivalence classes so that you can assume (of course, not absolutely confidently) that each test as a representative of some class is equivalent to any other test of this class.
In other words, if one test of an equivalence class detects an error, then it should be expected that all other tests of this equivalence class will find the same error. Conversely, if the test does not detect an error, then it should be expected that no test of this equivalence class will detect errors (in the event that a subset of the equivalence class does not fall within any other equivalence class, since equivalence classes may overlap).
These two provisions underlie the black box methodology, known as the equivalence partitioning. The second position is used to develop a set of “interesting” conditions that must be tested, and the first – to develop a minimum set of tests that cover these conditions.
An example of an equivalence class for a program about a triangle is a set of “three equal numbers having integer values, > 0”. By defining this set as an equivalence class, it is established that if an error is not detected by some test of the given set, then it is unlikely that it will be detected by another test of the set. In other words, in this case, testing time is better spent on something else (for testing other equivalence classes).