Почему называется попарное тестирование и что является парой на примере фильтра
Что проверяют
Понимаете ли вы, что такое комбинаторный взрыв и что именно покрывает попарное тестирование. Вопрос отсеивает тех, кто помнит название техники, но не может собрать набор тестов.
Как отвечать
Название идёт от того, что покрываются пары: в наборе тестов каждая пара значений любых двух параметров встречается хотя бы один раз. Не все комбинации целиком, а именно все пары. Основание у техники эмпирическое: большинство дефектов проявляется от одного параметра или от взаимодействия двух, а не от совпадения пяти сразу.
На фильтре в каталоге параметры это поля фильтра, значения это их варианты. Допустим: категория (три значения), цена (задана, не задана), наличие (да, нет), сортировка (по цене, по новизне, по популярности), вид списка (плитка, таблица). Полный перебор даёт 3 × 2 × 2 × 3 × 2 = 72 проверки. Парой будет, например, «сортировка по цене» вместе с «наличие да»: их сочетание должно встретиться хотя бы в одном тесте. Нижняя граница набора задана произведением двух самых больших параметров, здесь это девять тестов, и реальный набор укладывается примерно в столько же.
Набор считают инструментом: PICT, allpairs, генераторы внутри тест-фреймворков. Важно задать запрещённые сочетания, иначе генератор насыплет нереализуемых комбинаций, и отдельно добавить бизнес-критичные случаи, которые обязаны быть проверены целиком.
Где спотыкаются
Определяют попарное тестирование как «все возможные комбинации». Все комбинации это полный перебор, а смысл техники ровно обратный: сократить набор, сохранив покрытие пар.
Показывают пример на двух параметрах. При двух параметрах множество пар и есть полный перебор, экономии ноль, и пример ничего не иллюстрирует. Показывать нужно от четырёх параметров, где 72 проверки сжимаются до десятка.
Обещают, что техника находит все дефекты. Ошибка, которая вылезает только на сочетании трёх конкретных значений, в набор может не попасть. Плюс попарное тестирование ничего не говорит про порядок действий и про накопленное состояние системы.