Have you tested applications that involve a lot of combinational inputs to produce an output or report generations etc.? I’m sure you did. Heck of a task, I know! When there are more than 3 combinations probably with many values in it. Usually testers miss out on testing for all the combinations, which leads to the realtime issues. Combinatorial testing can be performed with the help of a best technique by pairing the inputs. It is called pairwise testing technique.
Best explained is with the help of an example:
REQUIREMENTHow would you test the percentage, grade and rank fields with the following requirement? What would be the possible cases? Below 35%, grade D is accepted Between 35% and 50%, grade C is accepted Between 50% and 70%, grade B is accepted Between 70 and 80 %, grade – A is accepted 80% and above, A+ is accepted. The percentage accepts decimals up to 2 places and for more than 2 places, round off to 2decimal place. And Rank should be tagged such that, For percentage above 90, Rank =1 For 80<=P<90, Rank =2 For 75<=p<80, Rank =3. 
EXHAUSTIVE TESTINGIf I must perform exhaustive testing cascading every value of a field with the other, the count of test cases would be elucidated something like this; Percentage – 0 to 100 Percentage should accept even decimals – decimal up to places have 99 combinations 0.1 to 0.99 Grade A+, A, B, C, D Rank 1, 2, 3 The total number of test cases, 101*99*5*3=149,985 Total number of test cases including negative (invalid) cases > 149,985

And that’s huge number!
CONVENTIONAL SOFTWARE TESTING METHODWith conventional software testing method; I can try to reduce such exhaustive combinations, yet complete test coverage. Percentage field should accept 1. positive integers {considering that 1.00 is taken as 1} (PI) 2. 0 3. Positive decimal number (PDN) not accept 4. negative integers (NI) 5. negative decimal numbers (NDN) total no of variables for percentage 5
Rank field should accept 1. 1 2. 2 3. 3 Not accept 4. Negative numbers (NN) 5. Numbers >3 (NA3) 6. 0 total no of variables for rank 6
Grade field should accept 1. A 2. B 3. C 4. D Not accept 5. Any alphabet after D. (Any alpha) total no of variables for grade 5
So, the total number of test cases reduce to 5*6*5=150

PAIRWISE TESTING
Let’s see how does pairwise testing reduce it further.
It’s simple, as many input fields those many would be the columns of the table to create combinations. Add an additional test case ID column (I have added number).
The first column (ignore test case number) should be the field which has highest number of variables.
Followed by the columns in the reducing order of the number of variables.
Create the table as shown below.
Test case number  Rank  Grade  Percentage 
1  1  A  PI 
2  1  B  0 
3  1  C  PDN 
4  1  D  NI 
5  1  Any alpha  NDN 
6  2  A  PI 
7  2  B  0 
8  2  C  PDN 
9  2  D  NI 
10  2  Any alpha  NDN 
11  3  A  PI 
12  3  B  0 
13  3  C  PDN 
14  3  D  NI 
15  3  Any alpha  NDN 
16  NN  A  PI 
17  NN  B  0 
18  NN  C  PDN 
19  NN  D  NI 
20  NN  Any alpha  NDN 
21  NA3  A  PI 
22  NA3  B  0 
23  NA3  C  PDN 
24  NA3  D  NI 
25  NA3  Any alpha  NDN 
26  0  A  PI 
27  0  B  0 
28  0  C  PDN 
29  0  D  NI 
30  0  Any alpha  NDN 
Please note, there should also be those test cases that suffice the conditions of the requirement. Few of which are anyways covered in the above.
Percentage  Grade  Rank 
0 to 34  D  
35  ?  
36 to 49  C  
50  ?  
51 to 69  B  
70  ?  
71 to 79  A  
75 to 79.99  A  3 
80 to 90  A+  2 
90.01 to 100  A+  1 
Pairwise technique has brought down the test cases count to 30 without any loss of coverage.
It concentrates in making various combinations of inputs, causing ease to test.
This reduces a lot of effort in test cases creation and strategizing as well. All we need to identify is the variables and frame the table.
The question remains, what if there are very many input combinations? – simple, use some open source pairwise testing tools!
Feel free to share your experience or the hurdles faced in such testing and how did you overcome them.