Decision table: meaning and examples
A decision table lists the conditions a rule depends on, the combinations of their values that matter, and the outcome for each combination. It is a truth table trimmed to the cases a business cares about.
A decision table has a conditions section, one row per condition, and an actions section, one row per outcome; each column is a rule, giving a value for every condition and the resulting action. Combinations that lead to the same action are often merged with a dash meaning “either value”, and combinations that cannot occur are left out. Testing standards treat the table as a specification technique: every column becomes at least one test case. A full table with every combination is simply a truth table in a different layout.
The artefact on this page is the discount rule (student OR senior) AND NOT expired, three conditions, so the full table has 8 columns. The output is true on rows 2, 4 and 6, where the card is not expired and the person is a student, a senior, or both. The satisfiable check holds with the witness student = FALSE, senior = TRUE, expired = FALSE, a column that grants the discount; the tautology check is violated with the counterexample student = FALSE, senior = FALSE, expired = FALSE, where nobody qualifies.
Decision tables are the standard tool of requirements analysts and testers, and the format in which business rules are reviewed with non-programmers, since each column reads as a scenario. Their weakness is omission: a merged table can silently drop a combination, and the truth table on this page is the check that nothing was dropped. The term is confused with a truth table (complete by construction) and with a decision tree, which orders the conditions.
Example
discount := (student OR senior) AND NOT expired · output
Exact checks
Truth table (8 rows)
| # | student | senior | expired | discount |
|---|---|---|---|---|
| 0 | FALSE | FALSE | FALSE | FALSE |
| 1 | FALSE | FALSE | TRUE | FALSE |
| 2 | FALSE | TRUE | FALSE | TRUE |
| 3 | FALSE | TRUE | TRUE | FALSE |
| 4 | TRUE | FALSE | FALSE | TRUE |
| 5 | TRUE | FALSE | TRUE | FALSE |
| 6 | TRUE | TRUE | FALSE | TRUE |
| 7 | TRUE | TRUE | TRUE | FALSE |
Plain-language reading
Beginnerdiscount is true exactly when both of the following hold:
1. at least one of student or senior is true (both may be true)
2. expired is false
In every other case, discount is false.
About the operators:
- AND is true only when all of its parts are true.
- OR is inclusive: it is true when at least one part is true, including when several are.
- NOT reverses a value: true becomes false and false becomes true.
Intermediatediscount is true exactly when both of the following hold:
1. at least one of student or senior is true (both may be true)
2. expired is false
In every other case, discount is false.
Advanceddiscount is true exactly when both of the following hold [conjunction ∧]:
1. at least one of student or senior is true (both may be true) [inclusive disjunction ∨]
2. expired is false [negation ¬]
In every other case, discount is false.
Formal notation: (student ∨ senior) ∧ ¬expired
The common slip
Merging columns by intuition. Two columns may be merged only if the action is the same for both values of the condition being dropped; merging a student column with a non-student column across different outcomes changes the rule. The comparison page on truth tables versus decision tables shows a safe merge.
Questions
How many test cases does a decision table give?
One per column at least. With three conditions and no merging that is 8; the table on this page merges to fewer because the four expired columns share one outcome. The testing page on decision tables walks through the reduction.
Related
See also
- Decision table vs truth table: when to use which
- Decision table testing, worked example (ISTQB Foundation 4.2.3 style)
- Truth table vs decision table
- Truth table: meaning and examples
- Decision table exercises with answers (ISTQB style)
- Discount eligibility rule: (student OR senior) AND NOT expired AND (member OR coupon)
Glossary
Generated from the Tangibool engine, semantics tangibool-semantics/1, engine 1.0.0, build . Every table, map, simplification and verdict on these pages was computed by the Tangibool engine when the site was built, and every claim was re-checked by the same exact checker the app uses. Limits are stated where they apply. © 2026 Foreranger LTD.