Test design techniques are systematic approaches to designing test cases efficiently. Since testing every possible input or condition is not realistic, these techniques help you identify the most representative patterns most likely to surface bugs.
The most widely used techniques include:
- Equivalence Partitioning
- Boundary Value Analysis
- Decision Table Testing
- State Transition Testing
Choosing the right technique depends on the purpose of your test and the characteristics of the system under test.
📌 Who This Article Is For
- QA engineers and developers who want a clear overview of test design techniques
- Anyone who wants to know which technique to use and when
- Those studying for ISTQB or other testing certifications
- Engineers who want a more structured approach to designing automated test cases
✅ What You’ll Learn
- The characteristics, purpose, and usage of all 7 techniques
- How to choose the right technique for each situation
- Links to in-depth articles on each technique for further reading
👤 About the Author
Written by Yoshi, a QA and test automation engineer with 15+ years of hands-on experience. Test design techniques are knowledge used on real projects every day. Code is publicly available on GitHub: github.com/YOSHITSUGU728/automated-testing-portfolio
“Too many test cases to manage.” “Not sure what level of testing is enough.” — Test design techniques exist to solve exactly these problems. This article covers 7 key techniques used by QA engineers in production, with a comparison table, detailed breakdown of each technique, and guidance on when to use which.
📌 Key Takeaways
- Test design techniques are about “how to find bugs efficiently” — not just “what to test”
- Each of the 7 techniques has different strengths, and combining them is standard practice
- Start with Equivalence Partitioning and Boundary Value Analysis, then layer in others based on system complexity
- Quick Comparison: 7 Test Design Techniques
- ① What Is Equivalence Partitioning?
- ② What Is Boundary Value Analysis?
- ③ What Is Decision Table Testing?
- ④ What Is State Transition Testing?
- ⑤ What Is Use Case Testing?
- ⑥ What Is Pairwise Testing?
- ⑦ What Is Error Guessing?
- Learning Order and When to Use Each Technique
- FAQ: Common Questions About Test Design Techniques
- 📋 Summary
Quick Comparison: 7 Test Design Techniques
| Technique | Best For | Difficulty | Automation Fit | Common Use Case |
|---|---|---|---|---|
| ① Equivalence Partitioning | Input range and type validation | ⭐ Beginner | ◎ parametrize | Input validation |
| ② Boundary Value Analysis | Range edges, off-by-one errors | ⭐ Beginner | ◎ parametrize | Numeric range checks |
| ③ Decision Table Testing | Multi-condition combinations | ⭐⭐ Intermediate | ○ parametrize | Auth / business logic |
| ④ State Transition Testing | Stateful systems and flows | ⭐⭐ Intermediate | ◎ E2E tests | Login / e-commerce cart |
| ⑤ Use Case Testing | Full user operation flows | ⭐⭐ Intermediate | ◎ E2E tests | Purchase flow / signup |
| ⑥ Pairwise Testing | Optimizing large combinations | ⭐⭐⭐ Advanced | ○ parametrize | OS / browser combos |
| ⑦ Error Guessing | Experience-based bug patterns | ⭐⭐⭐ Advanced | △ Experience-dependent | NULL / special chars / edge補完 |
① What Is Equivalence Partitioning?
Purpose
- Group input values that behave the same way to reduce the number of test cases
- Cover both valid and invalid equivalence classes
- Apply the principle that one representative value per group is sufficient
Equivalence partitioning divides input values into groups (equivalence classes) where every value in the group is expected to behave identically, then tests with just one representative value per group. It’s particularly effective for fields with range conditions — age, character count, numeric ranges, and so on.
✅ Best Suited For
| ⚠️ Less Suitable For
|
② What Is Boundary Value Analysis?
Purpose
- Focus testing on the edge values (boundaries) of each equivalence class
- Catch off-by-one errors (confusing
>=with>, etc.) - Combine with equivalence partitioning to improve bug detection rate
Statistics show that bugs cluster around boundary values. The standard approach is the 3-point method: test the boundary value itself, one value below it, and one value above it for each class boundary.
✅ Best Suited For
| ⚠️ Less Suitable For
|
parametrize pairs perfectly with boundary value analysis — you can translate your boundary test table directly into code with no extra work.③ What Is Decision Table Testing?
Purpose
- Organize all combinations of multiple conditions without gaps
- Visually manage combinatorial explosion (2 conditions × 2 values = 4 patterns, etc.)
- Verify complex business rules, permission logic, and multi-flag behavior
When multiple conditions interact, it becomes hard to ensure all combinations have been tested. Decision tables organize “conditions” and “actions (expected results)” into a table format, ensuring combinatorial coverage.
Decision Table Example (Login Processing)
| Condition / Action | Case 1 | Case 2 | Case 3 | Case 4 |
|---|---|---|---|---|
| Username is correct | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
| Password is correct | ✅ Yes | ❌ No | ✅ Yes | ❌ No |
| → Login succeeds | ✅ | ❌ | ❌ | ❌ |
✅ Best Suited For
| ⚠️ Less Suitable For
|
④ What Is State Transition Testing?
Purpose
- Map out a system’s “states” and “transition conditions” to design test cases
- Verify that valid transitions happen correctly and invalid ones are properly rejected
- Effective for stateful systems like e-commerce carts, login flows, and order management
Systems have states — “logged out” → “logged in” → “item in cart.” State transition testing maps this flow in a diagram or table and tests both all valid transitions and invalid/unexpected transitions.
State Transition Example (E-commerce Order Status)
| Current State | Event (Action) | Next State | What to Verify |
|---|---|---|---|
| Empty cart | Add item | Item in cart | Cart badge appears |
| Item in cart | Confirm purchase | Order confirmed | Confirmation email sent |
| Order confirmed | Request cancellation | Cancelled | Inventory restored |
| Cancelled | Cancel again (invalid) | Cancelled (unchanged) | Error shown or silently ignored |
✅ Best Suited For
| ⚠️ Less Suitable For
|
⑤ What Is Use Case Testing?
Purpose
- Translate a user’s end-to-end operation flow (use case) into test scenarios
- Cover both the basic flow (happy path) and alternative flows (errors, exceptions)
- Directly supports E2E test scenario design
Use case testing designs test cases around “the sequence of steps a user takes to achieve a goal.” For the use case “purchase a product,” that means testing the full flow: login → select item → add to cart → checkout → confirm completion.
✅ Best Suited For
| ⚠️ Less Suitable For
|
⑥ What Is Pairwise Testing?
Purpose
- Cover a large number of parameter combinations with the minimum possible test count
- Guarantee that every pair of parameters is tested at least once
- Drastically reduce test count compared to full combinatorial testing
When parameters explode — 3 parameters × 3 values = 27 cases, 4 × 3 = 81 — pairwise testing reduces this to around 9–12 cases. The technique is grounded in research showing that most bugs stem from the interaction of just two parameters.
✅ Best Suited For
| ⚠️ Less Suitable For
|
allpairspy (Python). Pass the generated parameter sets directly to pytest’s parametrize and you have automated tests instantly.⑦ What Is Error Guessing?
Purpose
- Intuitively test “values likely to cause bugs” based on past experience and known bug patterns
- Supplement other techniques by catching experientially risky cases they miss
- Put the QA engineer’s intuition and accumulated knowledge to systematic use
Error guessing is the only technique among the seven that relies on experience and intuition. “0 and negative numbers are risky.” “NULL and empty strings are traps.” “SQL injection strings.” “Extremely long strings.” — you actively test values that experience tells you are likely to break things.
Commonly Used Error Guessing Values
| Category | Example Values |
|---|---|
| Numeric | 0, -1, max value + 1, decimals, integer overflow values |
| String | Empty string, whitespace only, very long string (1000+ chars), mixed character sets |
| Special characters | Single quote, semicolon (SQL injection), <script> (XSS) |
| NULL / empty | NULL, undefined, empty array, unselected state |
✅ Best Suited For
| ⚠️ Less Suitable For
|
Learning Order and When to Use Each Technique
Here’s a summary of the recommended learning order and how to apply each technique.
| Step | Technique | When to Use |
|---|---|---|
| STEP 1 | Equivalence Partitioning → Boundary Value Analysis | Input validation, form validation (learn these first) |
| STEP 2 | Decision Table Testing | Business logic, permission management condition combinations |
| STEP 3 | State Transition Testing → Use Case Testing | E2E tests, full flow verification |
| STEP 4 | Pairwise Testing | Optimizing multi-parameter combinations |
| Always combine | Error Guessing | Add experience-based edge cases to supplement other techniques |
📖 Related Articles
FAQ: Common Questions About Test Design Techniques
Q. Do I need to learn all 7 techniques?
No. Understanding equivalence partitioning and boundary value analysis alone covers the vast majority of real-world scenarios. Master those two first, then add decision table testing and state transition testing as the complexity of your target system demands.
Q. Are test design techniques necessary for automated tests too?
Absolutely. In fact, many of these techniques pair especially well with automation. pytest’s @pytest.mark.parametrize works naturally with equivalence partitioning and boundary value analysis — you can convert your design table directly into code. Adding automated tests without design means you’re accumulating coverage without knowing whether the right things are being tested.
Q. Which techniques are most important for ISTQB?
For ISTQB Foundation Level, equivalence partitioning, boundary value analysis, decision table testing, and state transition testing are especially important. These four are the most frequently examined topics and are also the most commonly used techniques in production. Prioritize learning these four first.
Q. Is it okay to combine multiple techniques?
Combining them is actually the standard in production. A typical workflow is: “define groups with equivalence partitioning → test boundaries with boundary value analysis → add experientially risky values with error guessing.” Trying to rely on just one technique usually leaves gaps. Using multiple techniques together balances coverage and efficiency.
📋 Summary
- Equivalence Partitioning & Boundary Value Analysis: The foundation of input validation testing — master these first
- Decision Table Testing: Systematically covers all combinations of multiple conditions
- State Transition Testing: The best choice for verifying flows in stateful systems
- Use Case Testing: Directly drives E2E test scenario design
- Pairwise Testing: Efficiently resolves combinatorial explosion with many parameters
- Error Guessing: The final layer — supplements all other techniques with experience-based intuition
Test design techniques aren’t meant to all be used all the time — the skill is choosing the right technique for the characteristics of what you’re testing. Start by mastering equivalence partitioning and boundary value analysis, then layer in decision table testing and state transition testing as system complexity grows. That’s the most practical path in real-world QA engineering.
