Can someone explain difference between Corner Case Testing, Boundary Case Testing and Edge Case Testing with an example.
Corner Case Testing:
When the system breaks only for a specific valid input
Imagine a function getcar() that that takes a number and all numbers from 1-5 are valid inputs:
getcar(wheel=?) function works with all numbers but fails for getcar(wheel=3)
Edge Case Testing:
Here we check that the system handles extreme values of valid limits.
For the above example, the valid edge case scenarios are getcar(wheel=1) and getcar(wheel=5)
Boundary Case Testing:
Here we check that the system handles boundary values around the edge case values.
so in the above example, edge case values are 1 and 5. So, the boundary cases would be 0,2,4,6
These 3 are are common terms used in functional testing services and below are the details with example:-
The edge cases are cases whereby there is one condition tested on the extreme ends of possible values.
For simplicity consider a hardware example, a speaker with a volume range from 0 to 10; has edge cases at 0 and 10. Other example like what would happen if a user tries to upload a file with the maximum size allowed.
Corner cases are where multiple edge conditions are involved in testing. In our speaker example, a corner case could be testing volume extremes (like in an edge case) but at the same time test the edge of bass levels
For the file uploading service example, what would happen if:
-A user uploads a file with the maximum size allowed
-Multiple users try to do the same thing
Boundary CasesHere we test at the area around the edges.
For the speaker example with volume range from 0 to 10, possible boundary cases could test the speaker at volume levels 9, and 11 For file upload say file allowed size is 100 then test the upload for file size 99 and 101
Corner Case testing: Sticking to the definition, corner case testing is testing multiple parameters for extreme levels, as the user sticks to the corner of the configuration space.
Boundary case testing: When working on boundary testing, users have to test the system for extreme ends or boundaries of the input values. These usually include start-end, maximum-minimum, just inside-just outside, and lower-upper values.
Edge Case testing: Unlike corner and boundary testing, edge case testing works for checking the system for extreme operating parameters which is either the maximum or minimum value point.
I wonder this is more of a verbal difference between the terms and I would really be looking forward to seeing some more defined use cases and examples on understanding the difference between these three.