Таблицы принятия решений (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 тест-кейсов. Таблица наглядно показывает, не пропустили ли разработчики какую-то комбинацию.


Как построить таблицу

  1. Выпиши все условия — каждое должно иметь два или несколько значений (да/нет, или категории)
  2. Посчитай количество комбинаций — для N бинарных условий это 2^N
  3. Заполни условия — систематически перебирая все комбинации (как в двоичном счёте)
  4. Определи результат для каждой комбинации — из требований
  5. Проверь на полноту — нет ли непокрытых комбинаций

Оптимизация: объединение комбинаций

Если несколько комбинаций дают одинаковый результат, их можно объединить:

В примере с логином К3 и К4 дают одинаковый результат («пользователь не найден»). Можно записать одну колонку: «Логин неверный → результат не зависит от пароля».


Когда применять

Decision Tables отлично подходят для:

  • Сложной бизнес-логики (скидки, тарифы, права доступа)
  • Форм с зависимыми полями
  • Алгоритмов с множеством условных ветвей
  • Любого требования вида «если ... и ... то ...»

Частые ошибки

  • Пропустить некоторые комбинации — используй формулу 2^N для проверки
  • Не проверять взаимодействия условий — именно комбинации раскрывают скрытые дефекты
  • Применять технику к одиночным условиям — для одного условия достаточно EP/BVA

Что мы запомним

  • Decision Tables — инструмент для тестирования комбинаций условий
  • Каждый столбец таблицы = один тест-кейс
  • Для N бинарных условий: 2^N комбинаций
  • Техника выявляет ошибки во взаимодействии условий — то, что EP и BVA не покрывают

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике