Equivalence partitioning and boundary value analysis in Software Engineering - Time & Space Complexity
When studying equivalence partitioning and boundary value analysis, it is important to understand how these techniques reduce the number of test cases compared to exhaustive testing.
We want to know how test case count grows relative to the input domain size.
Compare exhaustive testing versus partition-based testing for a function with a defined input range.
Exhaustive testing:
for each value in input_domain: -- O(n)
run test(value)
Partition + Boundary testing:
partitions = split_into_classes(input_domain) -- O(1)
for each partition in partitions: -- O(p)
test one representative value
for each boundary in boundaries: -- O(b)
test boundary value
Exhaustive testing checks every possible value. Partition and boundary testing checks a fixed number of carefully selected values.
Look at what scales in each approach.
- Exhaustive: The test loop runs once per possible input value. For age 1-120, that is 120 tests for valid inputs alone.
- Partition + Boundary: The number of partitions (p) and boundaries (b) is determined by the specification, not the range size. Doubling the range does not double the tests.
As the valid range grows, exhaustive testing grows linearly but partition testing stays constant.
| Valid Range Size (n) | Exhaustive Tests | EP + BVA Tests |
|---|---|---|
| 10 (age 1-10) | 10+ | 9 (3 partition + 6 boundary) |
| 120 (age 1-120) | 120+ | 9 |
| 10,000 (ID 1-10000) | 10,000+ | 9 |
Pattern observation: EP + BVA test count depends on the number of partitions and boundaries, not the range size. It is essentially O(1) relative to domain size.
Exhaustive Testing: O(n) where n is the domain size
EP + BVA: O(p + b) where p is partitions and b is boundary values — typically constant for a given specification
This is why EP and BVA are standard techniques: they provide strong defect detection with a fixed, small number of tests regardless of input range size.
[X] Wrong: "More test cases always means better testing."
[OK] Correct: Testing age=25 and age=50 both exercise the same valid partition. The second test adds time but no additional defect detection. EP and BVA maximize coverage per test case by selecting values that represent distinct behaviors.
EP and BVA are among the most commonly asked testing techniques in QA and SDET interviews. Being able to derive a test set from a specification and explain why each value was chosen demonstrates strong testing fundamentals.
A function accepts a discount percentage from 0 to 100. How many equivalence partitions exist? What are the boundary values you would test?
Practice
equivalence partitioning in software testing?Solution
Step 1: Understand equivalence partitioning concept
Equivalence partitioning divides inputs into groups where all inputs in a group are expected to behave similarly.Step 2: Match description to options
Dividing input data into groups where test cases represent each group correctly states this grouping approach. Other options describe different testing ideas.Final Answer:
Dividing input data into groups where test cases represent each group -> Option DQuick Check:
Equivalence partitioning = Group inputs [OK]
- Confusing equivalence partitioning with boundary value analysis
- Thinking it tests only invalid inputs
- Assuming it requires exhaustive testing
Solution
Step 1: Identify boundary values for range 1 to 10
Boundaries are the edges: minimum (1), maximum (10), and just outside edges (0 and 11).Step 2: Check options for correct boundary inputs
0, 1, 10, 11 includes 0 (just below min), 1 (min), 10 (max), and 11 (just above max), which is correct for boundary testing.Final Answer:
0, 1, 10, 11 -> Option CQuick Check:
Boundary values = edges and just outside [OK]
- Testing only valid inputs ignoring just outside boundaries
- Choosing random middle values instead of edges
- Missing one side of the boundary
Solution
Step 1: Identify equivalence partitions and boundaries
Partitions: invalid below (<=0), valid (1-5), invalid above (>=6). Boundaries: 1 and 5 plus just outside 0 and 6.Step 2: Check which option covers all partitions and boundaries
[0, 1, 3, 5, 6] includes 0 (below), 1 (min boundary), 3 (valid middle), 5 (max boundary), and 6 (above), covering partitions and boundaries.Final Answer:
[0, 1, 3, 5, 6] -> Option AQuick Check:
Partitions + boundaries = test edges and groups [OK]
- Ignoring invalid partitions
- Testing only boundaries without middle values
- Choosing only valid inputs
[9, 10, 15, 20, 21]. The test failed to catch a bug at input 21. What is the likely mistake?Solution
Step 1: Analyze test inputs and bug location
Inputs include 9 (below min), 10 (min), 15 (middle), 20 (max), and 21 (just above max). Bug at 21 means boundary above max was tested.Step 2: Identify mistake causing bug miss
Since bug was missed at 21, likely the test did not properly check or handle the boundary just above max, possibly due to incorrect validation or test setup.Final Answer:
They only tested valid inputs and ignored invalid ones -> Option AQuick Check:
Boundary above max must be tested carefully [OK]
- Assuming testing 21 is enough without checking handling
- Ignoring off-by-one errors at boundaries
- Not validating test setup correctness
Solution
Step 1: Define equivalence partitions and boundaries for age 18-60
Partitions: invalid below 18, valid 18-60, invalid above 60. Boundaries: 18 (min), 60 (max), and just outside 17 and 61.Step 2: Evaluate options for coverage
[17, 18, 30, 60, 61] includes 17 (below min), 18 (min), 30 (valid middle), 60 (max), and 61 (above max), covering all partitions and boundaries effectively.Final Answer:
[17, 18, 30, 60, 61] -> Option BQuick Check:
Test invalid, valid, and boundary values for best coverage [OK]
- Ignoring invalid partitions
- Testing only valid inputs
- Missing boundary values just outside range
Ready to prove it?
Pass the test and this pattern moves unknown
