why is this soeven the simplest of programs has billions of possible inputs considerfor examplea program that purports to meet the specificationdef isbigger(xy)"""assumes and are ints returns true if is less than and false otherwise ""running it on all pairs of integers would beto say the leasttedious the best we can do is to run it on pairs of integers that have reasonable probability of producing the wrong answer if there is bug in the program the key to testing is finding collection of inputscalled test suitethat has high likelihood of revealing bugsyet does not take too long to run the key to doing this is partitioning the space of all possible inputs into subsets that provide equivalent information about the correctness of the programand then constructing test suite that contains one input from each partition (usuallyconstructing such test suite is not actually possible think of this as an unachievable ideal partition of set divides that set into collection of subsets such that each element of the original set belongs to exactly one of the subsets considerfor exampleisbigger(xythe set of possible inputs is all pairwise combinations of integers one way to partition this set is into these seven subsetsx positivey positive negativey negative positivey negative negativey positive if one tested the implementation on at least one value from each of these subsetsthere would be reasonable probability (but no guaranteeof exposing bug if one exists for most programsfinding good partitioning of the inputs is far easier said than done typicallypeople rely on heuristics based on exploring different paths through some combination of the code and the specifications heuristics based on exploring paths through the code fall into class called glass-box testing heuristics based on exploring paths through the specification fall into class called black-box testing black-box testing in principleblack-box tests are constructed without looking at the code to be tested black-box testing allows testers and implementers to be drawn from separate populations when those of us who teach programming courses generate test cases for the problem sets we assign studentswe are developing black-box test suites developers of commercial software often have quality assurance groups that are largely independent of development groups