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 real-time 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:
REQUIREMENT
How 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 2-decimal 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 TESTING
If 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 METHOD
With 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.