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

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

Таблица решений: правила «если — то»

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

Пример. Правило скидки: «новым клиентам — 10%; при оплате картой — ещё 5%». Условий два (новый клиент? оплата картой?), у каждого два значения (да/нет). Всего сочетаний — 2 × 2 = 4:

Новый клиент?Оплата картой?Скидка
ДаДа15%
ДаНет10%
НетДа5%
НетНет0%

Теперь у вас четыре чётких кейса, и ни одно сочетание не забыто. Часто именно при построении такой таблицы всплывает вопрос, на который в требованиях нет ответа: «а скидки складываются или берётся большая?». Это ценно — вы нашли дыру в требованиях ещё до тестирования.

Когда сочетаний слишком много

Пока условий два-три — таблица маленькая. Но комбинации растут лавинообразно. Пять условий по два значения — это уже 32 сочетания. Добавьте поле с четырьмя вариантами — сотни. Проверить все руками невозможно, а большинство сочетаний ничего нового и не покажут.

Пример: форма работает в 3 браузерах, на 3 операционных системах, для 3 ролей пользователя. Всех сочетаний 3 × 3 × 3 = 27. Проверять все 27 — долго и почти бессмысленно.

Попарное тестирование (pairwise)

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

Идея pairwise: подобрать небольшой набор проверок так, чтобы каждая пара значений встретилась хотя бы раз. Тогда 27 сочетаний из примера сжимаются примерно до 9 — а покрытие всех пар сохраняется. Багов при этом ловится почти столько же.

Вручную такие наборы не считают — для этого есть бесплатные онлайн-инструменты и генераторы (по запросу «pairwise tool»): вбиваете параметры и их значения, получаете готовый компактный список комбинаций. Ваша задача — понимать, зачем это, и уметь применить, когда комбинаций стало слишком много.

Как выбрать технику

Простое правило:

  • Условий немного (два-три), и важна вся логика «если — то» → таблица решений, проверяем все сочетания.
  • Условий/параметров много, и полный перебор нереален → попарное тестирование, сжимаем до разумного набора.

Где это применяется

Эти техники всплывают везде, где поведение зависит от нескольких «переключателей»: тарифы и скидки, права доступа по ролям, настройки, комбинации «браузер + устройство + тип аккаунта». Как только ловите себя на мысли «тут слишком много вариантов, все не проверю» — это сигнал достать таблицу решений или pairwise.

Где спотыкаются начинающие:

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

Что учить дальше. Не для всего нужны формальные кейсы и таблицы — иногда быстрее и удобнее чек-лист. А ещё для любых проверок нужны подходящие тестовые данные — про это следующая статья.