Урок по треку Основы тестирования и тест-дизайн 6 мин

Таблицы решений и попарное тестирование за 7 минут

Комбинации условий, сокращение таблицы, pairwise и когда он не спасает.

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

Таблица решений

Таблица решений описывает логику «если такое сочетание условий, то такое действие».

  • Строки: условия и действия.
  • Столбцы: правила, то есть комбинации значений условий с ожидаемым действием.
  • Каждое правило становится тестом.

Для n бинарных условий полная таблица содержит 2ⁿ правил: 3 условия дают 8, 4 условия 16, 5 условий 32.

Пример: бесплатная доставка

Правило: в обычном регионе доставка бесплатна при подписке или сумме от 3000 ₽, в удалённом только при подписке и сумме от 3000 ₽.

12345678
Удалённый регионННННДДДД
ПодпискаДДННДДНН
Сумма ≥ 3000ДНДНДНДН
БесплатноДДДНДННН

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

Сокращение

Если условие не влияет на результат при остальных фиксированных, правила сливают, ставя прочерк. Пример: кредит одобряют, только если есть доход и хорошая история.

123
ДоходДДН
Хорошая историяДН-
ОдобритьДНН

Из 4 правил осталось 3. Сокращать можно только после заполнения полной таблицы, иначе легко слить правила с разными результатами.

Невозможные правила

Если условия взаимоисключающие («клиент новый» и «клиент с историей больше года»), часть правил не может случиться. Их помечают невозможными, но подтверждают это у аналитика и проверяют, что система не попадает в такое состояние через API или импорт данных.

Граф причин и следствий

Формальная техника: причины, следствия и логические связи (И, ИЛИ, НЕ, исключение) рисуют графом, а таблицу решений получают из него механически. Полезно, когда условий много и важно не пропустить комбинацию.

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

Задача: 5 браузеров, 4 ОС, 3 языка, 2 темы. Полный перебор: 5 × 4 × 3 × 2 = 120 конфигураций.

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

Пример для трёх флажков A, B, C со значениями 0 и 1:

A B C
0 0 0
0 1 1
1 0 1
1 1 0

Любые два столбца содержат все сочетания 00, 01, 10, 11. Четыре теста вместо восьми.

Нижняя граница числа тестов равна произведению размеров двух самых больших параметров: каждая их пара требует своего теста. Для 5 браузеров и 4 ОС меньше 20 тестов не бывает. Для 4 параметров по 3 значения нижняя граница 9, и её достигает ортогональный массив L9 (вместо 81 комбинации).

Наборы строят генераторами, например PICT от Microsoft. Важно задавать ограничения: Safari не бывает на Windows. Если удалить невозможный тест руками, выпадут и другие пары, которые он покрывал.

Чего pairwise не ловит

Дефект, который проявляется только при сочетании трёх конкретных значений (Safari, тёмная тема и арабский язык), может не попасть ни в один тест. Для важных мест используют покрытие троек или добавляют рискованные комбинации вручную.

Что выбрать

СитуацияТехника
Результат зависит от сочетания условий (тариф, скидка, права)Таблица решений
Много независимых параметров, ожидаемо одинаковое поведение (конфигурации)Pairwise
Одно поле с диапазономКлассы и границы

Pairwise на бизнес-правилах опасен: генератор выкинет как раз те комбинации, где меняется результат.

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

  • Забывать, что таблица растёт как 2ⁿ, и не сокращать её.
  • Сокращать до заполнения.
  • Применять pairwise к зависимым параметрам.
  • Удалять невозможные комбинации руками вместо ограничений в генераторе.

Что спросят на собесе

  • Что такое таблица решений? Сколько в ней правил для 3 условий?
  • Что такое pairwise и почему он работает?
  • Как сократить матрицу из 120 конфигураций?
  • Какие дефекты pairwise пропустит?
  • Когда таблица решений, а когда pairwise?

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.