Классы эквивалентности и границы хороши, когда результат зависит от одного значения. Но часто он зависит от комбинации условий: скидка считается по-разному в зависимости от того, новый ли клиент, оплатил ли картой и превышает ли заказ определённую сумму. Тут нужны другие приёмы — таблицы решений и попарное тестирование.
Обе техники решают одну проблему: комбинаций может быть очень много, и надо аккуратно понять, какие из них проверить, чтобы ничего важного не упустить и не утонуть.
Таблица решений: правила «если — то»
Таблица решений — это когда все условия и результаты выписывают в таблицу, чтобы ясно увидеть каждое сочетание. Она незаменима, когда в требованиях есть логика вида «если то и это, тогда так».
Пример. Правило скидки: «новым клиентам — 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.
Где спотыкаются начинающие:
- Пытаются перебрать все комбинации руками и выгорают, либо бросают на полпути и проверяют случайные.
- Проверяют только одно-два очевидных сочетания и пропускают ту самую пару, где живёт баг.
- Не строят таблицу для логики «если — то» и в итоге забывают какое-нибудь сочетание условий целиком.
Что учить дальше. Не для всего нужны формальные кейсы и таблицы — иногда быстрее и удобнее чек-лист. А ещё для любых проверок нужны подходящие тестовые данные — про это следующая статья.