We do not have the resources to completely test our programs. Testing all possible situations in a software system might be impossible even if we had unlimited resources. Imagine a software system with “only” 300 different flags or configuration settings (such as the Linux operating system). Each flag can be set to true or false (Boolean) and can be set independently from the others. The software system behaves differently according to the configured combination of flags. Having two possible values for each of the 300 flags gives 2300 combinations that need to be tested. For comparison, the number of atoms in the universe is estimated to be 1080. In other words, this software system has more possible combinations to be tested than the universe has atoms.
Knowing that testing everything is not possible, we have to choose (or prioritize) what to test. This is why I emphasize the need for effective tests. The discusses techniques that will help you identify the relevant test cases.
Leave a Reply