Equivalence Classes
For each input, an equivalence class identifies the valid and invalid states. There are generally three scenarios to plan for when defining equivalence classes.
If the input specifies a range or a specific value, there will be one valid state, and two invalid states defined. For example, if a number must be between 1 and 20, the valid state is between 1 and 20, there will be an invalid state for less than 1, and an invalid state greater than 20.
If the input excludes a range or specific value, there will be two valid states, and one invalid state defined. For example, if a number must not be between 1 and 20, the valid states are less than one and greater than 20, and the invalid state is between 1 and 20.
If the input specifies a Boolean value, there will be just two states, one valid and one invalid.
Boundary Value Analysis
Boundary value analysis only considers the values at the boundary of the inputs. For example, in the case of a number being between 1 and 20, the test cases may be 1, 20, 0, and 21. The thinking behind it is that if the program works as expected with these values, the other values will also work as expected.
The following table gives an overview of the typical boundaries you may want to identify.
Testing Ranges |
Input type |
Test Values |
Range |
- x[lower_bound]-1
- x[lower_bound]
- x[upper_bound]
- x[upper_bound]+1
|
Boolean |
|
Devising a Test Plan
Identify the equivalence classes, and for each class identify the boundaries. Having identified the boundaries for the class, write a list of valid and invalid values on the boundary, and what the expected behavior should be. The tester can then run the program with the boundary values, and indicate what happened when the boundary value was tested against the required outcome.
The following might be a typical test plan used to check for an age being entered where the acceptable values are in the range of 10 to 110.
Equivalence Class |
Valid |
Invalid |
Between 10 and 110 |
> 110 |
|
< 10 |
Having defined our equivalence class, we can now devise a test plan for, age.
Test Plan |
Value |
State |
Expected Result |
Actual Result |
10 |
Valid |
Continue execution to get name |
|
110 |
Valid |
Continue execution to get name |
|
9 |
Invalid |
Ask for age again |
|
111 |
Invalid |
Ask for age again |
|
The "Actual Result" column is left blank, as it will be completed when testing. If the result is as expected, the column will be ticked. If not, a comment indicating what occurred should be entered.
|