Pairwise Pruning

Pairwise Testing is such a cool thing if you ever have to deal with testing a program or an API that is suffering from a test matrix explosion (due to a large number of all permutation / combinations of all involved variables such as Operating Systems, Browsers, languages, Service Packs, large API parameter lists etc.). In a nutshell it allows you to prune the list of test cases while still ensuring high coverage, based on the fact that most bugs are exposed through a combination of just 2 of the variables (so you don't need to cover all combinations). To get higher coverage you can always increase this to N-wise testing, where N can be {2,3,4...}. The impact that this can have on the number of test cases is best highlighted by quoting from the classic paper by Siddharta Dalal et. al., "The Combinatorial Design Approach to Automatic Test Generation" [Telcordia 1997]:

“The test requirements for the final release had a total of 75 parameters with 1029 possible test combinations. The combinatorial design approach required only 28 tests to cover all pairwise parameter combinations for the 75 test parameters.”

The Braidy Tester provides a great explanation of pairwise testing over here, along with links to some external tools you can use for pairwise testing. I recently stumbled across his blog and another great software test engineering blog. Their passion is contagious so watch out - you will yearn to be a tester by the time you are done reading their blogs.