Представьте форму с пятью фильтрами по три значения: как выбрать набор проверок, чтобы не перебирать все комбинации?
Используйте попарное тестирование: сформируйте набор комбинаций, в котором каждая пара значений любых двух фильтров встречается хотя бы один раз. Это резко уменьшает объём проверок по сравнению с полным перебором, но не гарантирует обнаружение дефектов, возникающих только при взаимодействии трёх и более фильтров.
Подход появился как ответ на проблему комбинаторного взрыва. При добавлении параметров число возможных комбинаций быстро растёт, поэтому полное покрытие часто становится слишком дорогим для ручного тестирования.
Комбинаторное тестирование позволяет сосредоточиться на взаимодействиях небольшого числа факторов. На практике чаще всего начинают с покрытия всех пар значений, поскольку многие дефекты вызываются взаимодействием двух параметров, хотя это не является гарантией для каждого продукта.
Если у каждого из пяти фильтров по три значения, полный перебор содержит 3⁵, то есть 243 комбинации. Для ручной проверки это может быть неоправданно дорого, особенно если каждый сценарий требует подготовки данных, выполнения операции и анализа результата.
Простое случайное сокращение набора не показывает, какие сочетания действительно проверены. В результате можно пропустить конкретную пару значений, связанную с дефектом, либо создать иллюзию хорошего покрытия при неравномерном распределении проверок.
Сначала представьте каждый фильтр как отдельный параметр, а его варианты — как значения параметра. Затем подберите набор строк-комбинаций так, чтобы для каждой пары фильтров все сочетания их значений встретились хотя бы один раз.
Например, должны быть покрыты все пары значений между первым и вторым фильтрами, первым и третьим, вторым и третьим и так далее. При этом одна комбинация обычно покрывает сразу несколько пар, поэтому итоговый набор значительно меньше полного перебора.
Перед построением набора нужно зафиксировать ограничения. Если определённые значения несовместимы, такую комбинацию нельзя считать обязательной проверкой: её исключают из набора или помечают как недопустимую. После генерации необходимо проверить, что ограничения соблюдены и требуемые пары действительно покрыты.
Попарное покрытие не заменяет проверки бизнес-критичных сценариев. Отдельно добавляют проверки обязательных комбинаций, граничных значений, разрешений, пустых результатов, ошибок валидации и известных зон риска.
Главный компромисс таков: меньше тестов сокращают стоимость проверки, но уменьшают вероятность обнаружить дефекты, зависящие от тройных или более сложных взаимодействий. Если система критична или история дефектов показывает много многофакторных ошибок, следует повысить уровень покрытия до троек либо применить полный перебор для ограниченной рискованной области.
В отчётной форме было пять фильтров: регион, тип клиента, период, статус и канал продаж. Полный перебор дал бы 243 комбинации, но часть сочетаний была запрещена бизнес-правилами.
Рассматривались три варианта. Полный перебор обеспечивал максимальное покрытие, но требовал слишком много ручного времени. Случайная выборка была бы быстрой, однако не позволяла доказать, какие взаимодействия проверены. Попарный набор давал контролируемое покрытие пар при существенно меньшем объёме, но не закрывал сложные тройные зависимости.
Выбрали ограниченное попарное тестирование, добавив отдельно критичные бизнес-комбинации и сценарии с пустыми результатами. Такой вариант обеспечил проверку всех допустимых пар, сохранил контроль над рисками и не расходовал время на заведомо запрещённые сочетания.
Нет. Число значений не определяет сложность взаимодействий. Дефект может проявляться только при конкретном сочетании трёх фильтров, поэтому попарное покрытие гарантирует лишь наличие всех требуемых пар, но не всех троек.
Нет, если система должна корректно обрабатывать только допустимые состояния. Такие комбинации либо исключают при построении набора, либо проверяют отдельно как негативные сценарии, если важно убедиться в корректной обработке запрета. Нельзя выдавать недопустимую комбинацию за полезное покрытие функционального поведения.
Случайная выборка может случайно покрыть многие пары, но это нельзя уверенно утверждать без последующего анализа. Она не гарантирует равномерного покрытия и может пропустить редкое, но важное сочетание. Попарный набор строится по явному критерию, поэтому его покрытие можно проверить и обосновать на собеседовании или в тестовой документации.