Ответ
Комбинаторное покрытие — это критерий тест-дизайна, требующий проверки всех возможных комбинаций значений входных параметров тестируемой системы.
Цель: Выявление дефектов, которые проявляются только при определенном сочетании значений разных параметров (дефекты взаимодействия).
Пример: Система имеет два параметра:
- Браузер: Chrome, Firefox
- ОС: Windows, macOS
Полное комбинаторное покрытие потребует 4 тестовых случая:
- Chrome + Windows
- Chrome + macOS
- Firefox + Windows
- Firefox + macOS
Проблема и решение: С ростом числа параметров и их значений количество комбинаций растет экспоненциально (взрыв комбинаторики). На практике используют оптимизированные техники:
- Попарное тестирование (Pairwise): Проверяются все возможные пары значений любых двух параметров. Это резко сокращает число тестов, находя большинство дефектов взаимодействия.
- Ортогональные массивы: Систематический метод для создания минимального набора тестовых комбинаций.
Применение: Тестирование конфигураций, форм с множеством полей, бизнес-правил с несколькими условиями.
Ответ 18+ 🔞
Да ты посмотри, какая хуйня интересная вырисовывается! Сидишь ты такой, тестируешь свою систему, а она, сука, вроде работает. Но только до тех пор, пока ты не начнёшь шаманить с настройками, как последний варлок!
Вот смотри, есть у тебя, допустим, форма. И в ней не просто одно поле «имя», а целая куча переключателей, галочек и выпадающих списков. И ты каждый из них по отдельности проверил — вроде норм. А потом бац — пользователь, этот ебучий тролль, выбирает комбинацию «галочка А + селект Б + радио-кнопка В», и вся система накрывается медным тазом! Пиздец, а не баг. И кто виноват? Ты, потому что не проверил все сочетания, блядь!
Вот для этого и нужен этот ваш комбинаторный охват. Суть проще пареной репы: надо проверить ВСЕ возможные комбинации всех значений всех параметров. Чтобы ни одна хитрая жопа-комбинация не ускользнула.
Зачем это, спросишь? А затем, чувак, чтобы выловить те дефекты, которые прячутся ТОЛЬКО когда параметры сходятся в определённой, ебаной, последовательности. Это как в химии: по отдельности натрий и вода — ничего такого, а вместе — БАБАХ, и тебе пизда.
Вот тебе простейший пример, чтобы мозг не взорвался: Допустим, мы тестируем, как наш сайт работает в разных условиях. Параметры всего два:
- Браузер: Хром, Фаерфокс
- ОС: Винда, макОсь
Чтобы покрыть всё нахуй, надо проверить 4 ситуации:
- Хром + Винда
- Хром + макОсь
- Фаерфокс + Винда
- Фаерфокс + макОсь
Всё, полный охват. Ни одна тварь не проскочит.
А теперь ловим проблему, ёпта! А что, если параметров не два, а, скажем, пять? И у каждого по 3-4 значения? Считаем комбинации: 3 3 4 3 4 = 432 тестовых случая, блядь! Это ж до второго пришествия тестировать! Это и есть взрыв комбинаторики, он же — пиздец и пустота в дедлайнах.
Что делать, спросит умный человек? Не ебать же мозг 432 тестами! А вот тут на помощь приходит магия, а точнее — попарное тестирование (Pairwise). Гениальная идея, ей-богу! Мы не проверяем ВСЕ комбинации всех параметров. Мы проверяем ВСЕ возможные ПАРЫ значений между ЛЮБЫМИ двумя параметрами.
Смысл в чём? Статистика, блядь, показывает, что абсолютное большинство багов (~70-90%) вылазят именно из-за взаимодействия ДВУХ параметров. Реже — трёх. А комбинации четырёх и больше — это уже из области ебанистики, такие баги встречаются редко. Так зачем же на них тратить время, которого и так ноль ебать?
Специальные тулзы (типа того же Allpairs) нагенерируют тебе минимальный набор тестов, который покроет все пары. И вместо 432 кейсов у тебя их будет, условно, 15. Волшебство, да? Риск, конечно, есть, но он оправдан, иначе проекту пизда.
Где эту хуйню применять? Да везде, где есть хоть какая-то многовариантность!
- Тестирование конфигураций железа или софта (ОС, браузер, разрешение, язык).
- Валидация сложных форм с кучей зависимых полей.
- Проверка бизнес-правил, где решение зависит от выполнения нескольких условий («Если клиент VIP И заказ больше 10000 И оплата онлайн, ТО дать скидку»).
Короче, если не хочешь, чтобы тебя потом ебали за то, что недоглядел какую-то ебучую комбинацию — учи матчасть про комбинаторное покрытие. А лучше — автоматизируй этот процесс, и живи спокойно.