Equivalence class testing (Equivalence class Partitioning) is a black-box testing technique used in software testing as a major step in the Software development life cycle (SDLC). This testing technique is better than many of the testing techniques like boundary value analysis, worst case testing, robust case testing and many more in terms of time consumption and terms of precision of the test cases. Since testing is done to identify possible risks, equivalence class testing performs better than the other techniques as the test cases generated using it are logically identified with partitions in between to create different input and output classes. This can be shown from the next-date problem which is stated below:
Given a day in the format of day-month-year, you need to find the next date for the given date. Perform boundary value analysis and equivalence-class testing for this.
Conditions :
D: 1<Day<31 M: 1<Month<12 Y: 1800 <Year <2048
Boundary Value Analysis:
No. of test Cases (n = no. of variables) = 4n+1 = 4*3 +1 =13
Test Cases:
Test Case ID | Day | Month | Year | Expected Output |
---|---|---|---|---|
1 | 1 | 6 | 2000 | 2-6-2000 |
2 | 2 | 6 | 2000 | 3-6-2000 |
3 | 15 | 6 | 2000 | 16-6-2000 |
4 | 30 | 6 | 2000 | 1-7-2000 |
5 | 31 | 6 | 2000 | Invalid Date |
6 | 15 | 1 | 2000 | 16-1-2000 |
7 | 15 | 2 | 2000 | 16-2-2000 |
8 | 15 | 11 | 2000 | 16-11-2000 |
9 | 15 | 12 | 2000 | 16-12-2000 |
10 | 15 | 6 | 1800 | 16-6-1800 |
11 | 15 | 6 | 1801 | 16-6-1801 |
12 | 15 | 6 | 2047 | 16-6-2047 |
13 | 15 | 6 | 2048 | 16-6-2048 |
Equivalence Class Testing:
Input classes:
Day: D1: day between 1 to 28 D2: 29 D3: 30 D4: 31 Month: M1: Month has 30 days M2: Month has 31 days M3: Month is February Year: Y1: Year is a leap year Y2: Year is a normal year
Output Classes:
Increment Day Reset Day and Increment Month Increment Year Invalid Date
Strong Normal Equivalence Class Test Cases:
Test Cases:
Test Case ID | Day | Month | Year | Expected Output |
---|---|---|---|---|
E1 | 15 | 4 | 2004 | 16-4-2004 |
E2 | 15 | 4 | 2003 | 16-4-2003 |
E3 | 15 | 1 | 2004 | 16-1-2004 |
E4 | 15 | 1 | 2003 | 16-1-2003 |
E5 | 15 | 2 | 2004 | 16-2-2004 |
E6 | 15 | 2 | 2003 | 16-2-2003 |
E7 | 29 | 4 | 2004 | 30-4-2004 |
E8 | 29 | 4 | 2003 | 30-4-2003 |
E9 | 29 | 1 | 2004 | 30-1-2004 |
E10 | 29 | 1 | 2003 | 30-1-2003 |
E11 | 29 | 2 | 2004 | 1-3-2004 |
E12 | 29 | 2 | 2003 | Invalid Date |
E13 | 30 | 4 | 2004 | 1-5-2004 |
E14 | 30 | 4 | 2003 | 1-5-2003 |
E15 | 30 | 1 | 2004 | 31-1-2004 |
E16 | 30 | 1 | 2003 | 31-1-2003 |
E17 | 30 | 2 | 2004 | Invalid Date |
E18 | 30 | 2 | 2003 | Invalid Date |
E19 | 31 | 4 | 2004 | Invalid Date |
E20 | 31 | 4 | 2003 | Invalid Date |
E21 | 31 | 1 | 2004 | 1-2-2004 |
E22 | 31 | 1 | 2003 | 1-5-2003 |
E23 | 31 | 2 | 2004 | Invalid Date |
E24 | 31 | 2 | 2003 | Invalid Date |
So from this problem it is clearly seen that equivalence class testing clearly checks for many cases that boundary value did not considered like that of February which has 28-29 days, leap year which lead to variation in number of days in February and many more.
Hence the above example proves that equivalence partitioning generates more efficient test cases that should be considered during risk assessment.