 testing possibilities. A stronger measure is branch coverage, in which the set of tests Black-box testing is testing of software chosen without knowledge cases is chosen SO that both 'true' and 'false' results are ob- of the way in which the software is constructed. The tests are based tained at each decision point in the code. on the requirements and specification, not on the internal design. Stronger still is condition coverage. Here, where the decision point may depend on a compound condition, each condition in Equivalence classes. An equivalence class is a set of possible the decision is required to take all possible results at least once. values for a particular input condition which might reasonably So, for example, given the decision point: do X if A and B' the be expected to be treated in the same way by the software. test cases must show instances of A 'true' and A 'false' and also Testing one value from the set can be assumed to serve for B 'true' and B 'false'. [Note that this does not demand all testing any other value in the set. For any input condition there possible combinations of conditions. In this example two tests would be expected to be at least two equivalence classes: the might suffice: one providing both A and B 'true' and the other set of valid inputs and the set of invalid inputs. More usually providing both A and B 'false'; the case A 'true; and B 'false' there would be several and perhaps many equivalence classes. need not be examined yet the coverage criteria is met.] Having identified the classes a set of tests is designed which Even stronger measures may be based on the coverage of attempts to use at least one member of each class within the certain kinds of sub-paths through the code. One such example smallest convenient number of tests. Such a set of tests gives is the set of 'linear code sequence and jump' paths (LCSAJ) comprehensive coverage (though not exhaustive coverage; see (Woodward, 1980) which considers combinations of decision below) without being unnecessarily wasteful