Таблицы принятия решений (Decision Tables)
Таблицы принятия решений (Decision Tables)
Введение
Иногда одно поле — это просто. Но что если результат зависит от трёх условий одновременно? Например: скидка применяется, если пользователь — участник программы лояльности И сумма заказа больше 1000 рублей И акция активна. Три условия, каждое может быть да/нет — это 8 возможных комбинаций.
Таблицы принятия решений — техника для тестирования бизнес-логики, где несколько условий в комбинации дают разные результаты.
Структура таблицы

Таблица принятия решений состоит из четырёх зон:
+------------------+-------+-------+-------+-------+
| УСЛОВИЯ | К1 | К2 | К3 | К4 |
+------------------+-------+-------+-------+-------+
| Условие 1 | ДА | ДА | НЕТ | НЕТ |
| Условие 2 | ДА | НЕТ | ДА | НЕТ |
+------------------+-------+-------+-------+-------+
| ДЕЙСТВИЯ | | | | |
+------------------+-------+-------+-------+-------+
| Действие/Результат| A1 | A2 | A3 | A4 |
+------------------+-------+-------+-------+-------+
- Условия — входные переменные (каждая строка = одно условие)
- Комбинации — каждый столбец = одна уникальная комбинация условий
- Действия — результат для данной комбинации
Пример: форма входа (логин)
Два условия: логин (верный/неверный) и пароль (верный/неверный).
| К1 | К2 | К3 | К4 | |
|---|---|---|---|---|
| Логин верный? | Да | Да | Нет | Нет |
| Пароль верный? | Да | Нет | Да | Нет |
| Результат | Вход выполнен | Ошибка: неверный пароль | Ошибка: пользователь не найден | Ошибка: пользователь не найден |
4 комбинации → 4 тест-кейса. Каждый столбец — отдельный тест.
Пример: скидка на заказ
Три условия: участник программы лояльности, сумма > 1000₽, акция активна.
| К1 | К2 | К3 | К4 | К5 | К6 | К7 | К8 | |
|---|---|---|---|---|---|---|---|---|
| Лояльность? | Да | Да | Да | Да | Нет | Нет | Нет | Нет |
| Сумма > 1000? | Да | Да | Нет | Нет | Да | Да | Нет | Нет |
| Акция активна? | Да | Нет | Да | Нет | Да | Нет | Да | Нет |
| Скидка | 20% | 10% | 10% | 0% | 5% | 0% | 0% | 0% |
8 комбинаций → 8 тест-кейсов. Таблица наглядно показывает, не пропустили ли разработчики какую-то комбинацию.
Как построить таблицу
- Выпиши все условия — каждое должно иметь два или несколько значений (да/нет, или категории)
- Посчитай количество комбинаций — для N бинарных условий это 2^N
- Заполни условия — систематически перебирая все комбинации (как в двоичном счёте)
- Определи результат для каждой комбинации — из требований
- Проверь на полноту — нет ли непокрытых комбинаций
Оптимизация: объединение комбинаций
Если несколько комбинаций дают одинаковый результат, их можно объединить:
В примере с логином К3 и К4 дают одинаковый результат («пользователь не найден»). Можно записать одну колонку: «Логин неверный → результат не зависит от пароля».
Когда применять
Decision Tables отлично подходят для:
- Сложной бизнес-логики (скидки, тарифы, права доступа)
- Форм с зависимыми полями
- Алгоритмов с множеством условных ветвей
- Любого требования вида «если ... и ... то ...»
Частые ошибки
- Пропустить некоторые комбинации — используй формулу 2^N для проверки
- Не проверять взаимодействия условий — именно комбинации раскрывают скрытые дефекты
- Применять технику к одиночным условиям — для одного условия достаточно EP/BVA
Что мы запомним
- Decision Tables — инструмент для тестирования комбинаций условий
- Каждый столбец таблицы = один тест-кейс
- Для N бинарных условий: 2^N комбинаций
- Техника выявляет ошибки во взаимодействии условий — то, что EP и BVA не покрывают