Попарное тестирование: как из 96 комбинаций сделать 12
Когда параметров много, полный перебор превращается в тысячи проверок. Попарное тестирование сокращает их в разы, и при этом ловит большинство дефектов сочетаний.
Откуда берётся проблема
Возьмём форму заказа с параметрами: способ доставки (4 варианта), способ оплаты (3), тип клиента (2), регион (4). Полный перебор — 4 × 3 × 2 × 4 = 96 комбинаций. Это на одной форме и без учёта данных внутри полей.
Проверить 96 сценариев руками — несколько дней. Проверить один-два и надеяться — обычная практика, из-за которой всплывают дефекты вида «при курьерской доставке в другой регион с оплатой при получении сумма считается неверно».
Идея попарного тестирования
В основе — практическое наблюдение: подавляющее большинство дефектов сочетаний вызывает взаимодействие двух параметров, а не пяти сразу. Логика в коде обычно выглядит как «если доставка курьером и оплата при получении, то…», и редко когда условие содержит четыре переменные одновременно.
Значит, вместо всех комбинаций достаточно набора, в котором каждая пара значений встречается хотя бы раз. Курьер + карта, курьер + наличные, самовывоз + карта и так далее — все пары есть, но не в 96 строках, а примерно в 12.
Полный перебор проверяет всё. Попарный — всё, что реально ломается.
Как построить набор
- Выпишите параметры и их значения. Только те, что действительно влияют на поведение: цвет кнопки в набор не идёт.
- Сократите значения. Если регионов сорок, но логика различает только «столица / регион / зарубеж», берите три, а не сорок.
- Постройте таблицу. Начните с параметра с наибольшим числом значений, дальше добавляйте остальные так, чтобы новые пары появлялись в каждой строке.
- Проверьте покрытие. Пройдитесь по всем парам и убедитесь, что каждая встречается.
- Добавьте обязательные комбинации. Те, что критичны для бизнеса, входят в набор независимо от алгоритма.
Руками это делается на бумаге за десять-пятнадцать минут при трёх-четырёх параметрах. Дальше проще взять инструмент: существуют генераторы попарных наборов, в том числе бесплатные и онлайн — они строят таблицу за секунды.
Пример на четырёх параметрах
Возьмём упрощённый случай: доставка (курьер, самовывоз, почта), оплата (карта, наличные), клиент (новый, постоянный). Полный перебор — 12 комбинаций, попарный сокращает до шести:
| № | Доставка | Оплата | Клиент |
|---|---|---|---|
| 1 | Курьер | Карта | Новый |
| 2 | Курьер | Наличные | Постоянный |
| 3 | Самовывоз | Карта | Постоянный |
| 4 | Самовывоз | Наличные | Новый |
| 5 | Почта | Карта | Новый |
| 6 | Почта | Наличные | Постоянный |
Проверьте сами: любая пара — «курьер + наличные», «почта + новый», «карта + постоянный» — встречается хотя бы в одной строке. При этом строк вдвое меньше. На реальных задачах с большим числом параметров сокращение получается кратно сильнее.
Что попарное тестирование не покрывает
Честно о границах — это важно, потому что технику часто применяют как волшебную таблетку.
- Дефекты от трёх и более параметров сразу. Они существуют, просто редки. Если в требованиях есть условие с тремя переменными, добавьте эту комбинацию вручную.
- Невозможные сочетания. «Самовывоз + доставка в другую страну» не бывает — такие пары нужно исключать, иначе половина набора уйдёт в проверку бессмыслицы.
- Значения внутри полей. Попарное работает с вариантами параметров, а границы и классы внутри каждого — отдельная работа, см. классы эквивалентности и границы.
- Последовательности действий. «Добавил, удалил, добавил снова» — это не комбинация параметров, а сценарий.
Взять все поля формы и загнать в генератор. Получится большой набор из проверок, половина которых бессмысленна, а важные сочетания утонут. Техника работает, когда параметры отобраны осмысленно — по влиянию на логику, а не по наличию на экране.
Как объяснить экономию команде
Техника плохо приживается, когда её преподносят как «умный способ проверять меньше». Со стороны это звучит как предложение снизить качество. Формулировка решает.
Работает разговор в цифрах: «полный перебор — 96 сценариев, это три дня; попарный набор — 12 сценариев, это три часа, и в нём проверена каждая пара значений. Оставшиеся 84 комбинации отличаются только сочетаниями трёх и более параметров одновременно — если в требованиях такие есть, добавим их отдельно».
После этого обсуждение переходит из «проверяем всё или не всё» в «какие тройки параметров у нас реально есть», а это уже полезный разговор о требованиях.
Когда её применять
Признак, что пора: у функции есть настройки, тарифы, роли или режимы, и их сочетания меняют поведение. Типичные места — оформление заказа, тарифные планы, права доступа, отчёты с фильтрами, формы с зависимыми полями.
Если параметров два-три с двумя значениями каждый, полный перебор дешевле любой техники: восемь проверок можно просто пройти. Попарное начинает окупаться от четырёх параметров.
Как объяснить попарное тестирование на собеседовании?
Через пример с цифрами: было 96 комбинаций, стало 12, при этом каждая пара значений проверена. Формулировка «большинство дефектов вызывает сочетание двух параметров» звучит убедительнее определения.
Обязательно ли пользоваться генератором?
Нет, при трёх-четырёх параметрах таблица строится руками. Генератор экономит время, когда параметров больше и значения неравномерны.
Чем попарное отличается от таблицы решений?
Таблица решений описывает всю логику «если — то» целиком и проверяет её полноту. Попарное сокращает число комбинаций для проверки. Часто применяются вместе: таблица показывает правила, попарное сокращает перебор.
Техники тест-дизайна выглядят простыми в тексте и перестают быть простыми на настоящих требованиях — там всплывают невозможные сочетания, зависимые поля и правила, которые нигде не записаны. На курсе они отрабатываются на реальных задачах: вы строите набор, система проверяет покрытие пар и показывает пропущенное. «Ручной тестировщик» — 14 900 ₽ один раз, доступ навсегда.