Таблицы решений: как проверить сложную логику и ничего не забыть

Когда в требованиях появляется несколько «если», разобраться в них на слух невозможно. Таблица решений превращает путаницу в сетку, где сразу видно пропущенные случаи.

Что это такое

Таблица решений — способ разложить логику «если — то» на две части: условия (что может быть истинно) и действия (что происходит). Каждый столбец — одно правило: сочетание условий и результат.

Техника простая, но у неё есть свойство, которого нет у остальных: она находит дефекты в самих требованиях, ещё до того как их запрограммировали. Это самый дешёвый дефект из возможных.

Пример: скидка в интернет-магазине

Требования звучат так: «Постоянным клиентам скидка 10%. При заказе от 5000 ₽ скидка 5%. Скидки не суммируются, применяется большая. По промокоду скидка 15%, промокод не сочетается с другими скидками».

На слух кажется понятным. Раскладываем:

УсловиеП1П2П3П4П5П6
Постоянный клиентдаданетнетданет
Сумма ≥ 5000данетданетдада
Есть промокоднетнетнетнетдада
Скидка10%10%5%0%15%15%

И вот тут начинается интересное. Разложив, мы получили конкретные вопросы, которых не было видно в тексте:

💡 Вот это и есть польза техники

Четыре вопроса, найденные за десять минут с таблицей, — это четыре дефекта, которые не появятся. Исправить требование стоит минуту разговора. Исправить готовый код, из-за которого клиенты получили не ту скидку, — намного дороже.

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

  1. Выпишите условия. Всё, от чего зависит результат: статус клиента, сумма, наличие промокода, регион.
  2. Выпишите действия. Что система делает: применяет скидку, отказывает, показывает сообщение.
  3. Постройте комбинации. При n логических условий их 2ⁿ: три условия — восемь столбцов.
  4. Заполните результаты. Здесь и всплывают пробелы: столбцы, для которых в требованиях ответа нет.
  5. Уберите невозможные сочетания и объедините одинаковые.
  6. Превратите оставшиеся столбцы в проверки. Каждый столбец — один тест-кейс.

Пятый шаг важен: если при трёх условиях получилось восемь столбцов, но четыре из них дают одинаковый результат, их можно свернуть в один — и проверок станет меньше.

Где эта техника незаменима

Ещё пример: доступ к документу

Права доступа — вторая классическая область для этой техники, и там пробелы в требованиях встречаются почти всегда.

Условия: пользователь — владелец документа; у пользователя роль администратора; документ опубликован. Действия: читать, редактировать, удалять.

УсловиеП1П2П3П4
Владелецданетнетнет
Администраторнетданетнет
Опубликованнетнетданет
Чтениедададанет
Редактированиедаданетнет
Удалениедаданетнет

И сразу вопросы, которых не было в тексте требований: может ли администратор редактировать чужой опубликованный документ без ведома автора? Что происходит при снятии публикации — доступ пропадает мгновенно или до конца сессии? Владелец может удалить документ, на который уже ссылаются другие?

Каждый такой вопрос — потенциальная дыра в правах, то есть дефект безопасности. Найти его таблицей стоит десять минут, найти в проде — совсем других денег.

Чем отличается от попарного тестирования

Обе техники работают с комбинациями, но решают разные задачи, и их часто путают.

Таблица решенийПопарное
ЗадачаРазобрать логику и найти пробелыСократить число комбинаций
ПолнотаВсе комбинации условийТолько пары значений
Когда применятьПравил немного, но они запутаныПараметров много, логика простая
Что находитПротиворечия в требованияхДефекты сочетаний

На практике их применяют вместе: таблица показывает правила, а если параметров становится слишком много, набор сокращают попарным методом. Разбор второй техники — в статье про попарное тестирование.

Когда таблица не нужна

Честно о границах: при одном-двух условиях таблица избыточна, проще проверить напрямую. При десяти условиях она разрастается до тысячи столбцов и становится нечитаемой — тогда логику дробят на части и строят несколько таблиц поменьше.

Рабочий диапазон — три-пять условий. Это как раз тот случай, когда на слух уже не удержать, а формализовать ещё несложно.

Как применять таблицу, если требований нет?

Тогда она нужна ещё больше. Постройте её по тому, как система работает сейчас, и покажите аналитику: «вот что я вижу, вот эти четыре случая непонятны». Это превращает отсутствие требований из проблемы в задачу.

Обязательно ли рисовать в таблице?

Формат не важен: подойдёт лист бумаги, таблица или список. Важна сама процедура — перебрать сочетания и найти пустые клетки.

Что спрашивают на собеседовании?

Обычно просят объяснить технику и привести пример. Сильный ответ — рассказать не про проверки, а про найденные противоречия в требованиях: это показывает, что вы техникой пользовались.