Skip to content

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

Always true (tautology)? No Counterexample: student = F, senior = F, expired = F · Exhaustively checked and solver cross-checked · 1 rows
Always false (contradiction)? No Counterexample: student = F, senior = T, expired = F · Exhaustively checked and solver cross-checked · 3 rows
Can be true? Yes Example assignment: student = F, senior = T, expired = F · Exhaustively checked and solver cross-checked · 3 rows

Truth table (8 rows)

Decision table: meaning and examples
#studentseniorexpireddiscount
0FALSEFALSEFALSEFALSE
1FALSEFALSETRUEFALSE
2FALSETRUEFALSETRUE
3FALSETRUETRUEFALSE
4TRUEFALSEFALSETRUE
5TRUEFALSETRUEFALSE
6TRUETRUEFALSETRUE
7TRUETRUETRUEFALSE

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

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.