Модуль 3 · Урок 10

Decision tables для business rules

Коли outcome залежить від комбінації умов, список happy/negative cases легко пропускає rule. Decision table робить logic, infeasible combinations і coverage явними до виконання тестів.

ConditionsActionsRulesFeasible coverage

Анатомія decision table

Conditions та actions утворюють rows; кожна column — окрема decision rule з унікальною комбінацією conditions і очікуваними actions. Limited-entry table використовує T/F; extended-entry може містити partitions, ranges або discrete values.

R1R2R3R4
Member activeTTTF
Inventory availableTTF
Payment authorizedTF
Create bookingX
OutcomeConfirmedDeclinedSold outMembership required

«–» і infeasible — не те саме

IrrelevantCondition не впливає на action у цій rule; позначається «–» лише після обґрунтування.
InfeasibleCombination не може існувати за model/process; її виключення має мати evidence.
Missing ruleКомбінація можлива, але outcome не визначений — це gap у requirement.

Full table покриває всі combinations. Її можна скоротити, вилучивши infeasible columns або об’єднавши rules, де condition справді irrelevant. Не мінімізуйте table так, щоб зник critical outcome.

Coverage і контроль side effects

Coverage items — feasible rule columns. 100% означає виконати кожну feasible column. Oracle має перевіряти не лише message: booking, inventory reservation, payment capture, audit event і rollback. Для багатьох conditions кількість combinations росте експоненційно, тому ризик-орієнтований scope має бути явним.

Одна умова — не один test

Decision-table testing перевіряє комбінації. Три окремі tests «member», «inventory», «payment» не доводять, що їхня спільна rule реалізована правильно.

Практика

  1. Завершіть `decision-table.csv` для BookFlow.
  2. Позначте feasible, infeasible та irrelevant values із поясненням.
  3. Створіть test для кожної feasible column.
  4. Додайте oracles для state, inventory, payment і user message.

Офіційне джерело

Практична перевірка · урок 10 з 20

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Коли decision table найбільш доречна?
2. Що представляє column decision table?
3. Що означає «–» у condition?