You can never test every possible input, so the art of test design is choosing the right tests — a small set that finds the most defects. Formal techniques make this systematic rather than guesswork.
Core black box techniques
- Equivalence partitioning — divide inputs into groups that should behave the same, then test one value per group.
- Boundary value analysis — test the edges of ranges, where defects cluster (e.g. 0, 1, max, max+1).
- Decision tables — map combinations of conditions to expected actions.
- State transition testing — test how the system moves between states.
Boundary value analysis for a 1–100 field
0 invalid
1 valid min
100 valid max
101 invalid
White box techniques
- Statement coverage — every line of code executed at least once.
- Branch coverage — every decision tested both true and false.
- Path coverage — meaningful combinations of paths exercised.
Why bother? these techniques let you justify your coverage. Instead of "we tested a lot", you can say "we covered every equivalence class and boundary" — a far stronger statement.
Conclusion
Test design techniques turn an impossible task — testing everything — into a manageable, defensible one. They concentrate effort where defects hide, giving maximum coverage from minimum tests.