Test design techniques reduce a large input space to a small, deliberate set of tests. Use the technique that matches the risk and behaviour.
Equivalence partitioning
Group values that should behave the same, then select a representative from each valid and invalid group.
| Age rule: 18–65 | Partition | Example |
|---|---|---|
| Below range | Invalid | 10 |
| Inside range | Valid | 35 |
| Above range | Invalid | 80 |
| Non-number | Invalid type | "adult" |
Boundary value analysis
Defects often occur at edges. For the inclusive range 18–65, test:
17, 18, 19, 64, 65, 66
Also consider empty, zero, maximum storage length, date changes, pagination edges and just-before or just-after time limits.
Decision tables
Use a table when combinations of rules produce different outcomes.
| Member? | Coupon valid? | Result |
|---|---|---|
| Yes | Yes | Member price plus coupon |
| Yes | No | Member price |
| No | Yes | Standard price plus coupon |
| No | No | Standard price |
- List conditions and actions.
- Create meaningful combinations.
- Remove impossible combinations.
- Turn each remaining rule into a test.
Pairwise testing
Pairwise testing creates a small set where every pair of parameter values appears at least once. It is useful for combinations such as browser, operating system, language and user role.
State transitions
Use state-transition tests when allowed actions depend on the current state.
| Current state | Event | Expected state |
|---|---|---|
| Draft | Submit | In review |
| In review | Approve | Published |
| In review | Reject | Draft |
| Published | Submit again | Rejected action |
- Cover valid transitions.
- Attempt forbidden transitions.
- Check repeated events and interruptions.
- Verify history, notifications and permissions.
Practical approach
- Write the rule in plain language.
- Identify inputs, partitions, boundaries, combinations and states.
- Select the smallest set that covers the important risk.
- Add misuse, production defects and business-critical examples.
- Record why each test exists.