


Попарное тестирование подбирает набор сценариев так, чтобы каждая допустимая пара значений разных параметров встретилась хотя бы в одном сценарии. Оно сокращает перебор комбинаций, но не доказывает отсутствие ошибок, связанных с тремя параметрами одновременно или с последовательностью действий.
Возьмём учебную форму выгрузки отчёта. У неё три независимых параметра: язык интерфейса RU или EN, формат CSV или JSON, включение завершённых задач да или нет. Все сочетания в этой модели допустимы. Полный перебор содержит 2 × 2 × 2 = 8 комбинаций.
Для каждой проверки нужен наблюдаемый результат: выгрузка соответствует выбранному формату, состав задач учитывает переключатель, а интерфейс показывает текст на выбранном языке. Само наличие строки в таблице ещё не означает выполненный тест.
| Сценарий | Язык | Формат | Завершённые |
|---|---|---|---|
| 1 | RU | CSV | Нет |
| 2 | RU | JSON | Да |
| 3 | EN | CSV | Да |
| 4 | EN | JSON | Нет |
Рассмотрите параметры «язык + формат»: таблица содержит RU/CSV, RU/JSON, EN/CSV и EN/JSON. Аналогично покрыты четыре пары «язык + завершённые» и четыре пары «формат + завершённые». Всего здесь 12 разных пар значений с учётом того, к каким параметрам они относятся. Четыре сценария покрывают их все.
Короткая проверка на Python сравнивает каждую проекцию таблицы с полным декартовым произведением значений двух параметров. Она подтверждает именно покрытие модели, а не качество приложения.
from itertools import combinations, product
values = [("RU", "EN"), ("CSV", "JSON"), (False, True)]
cases = [
("RU", "CSV", False), ("RU", "JSON", True),
("EN", "CSV", True), ("EN", "JSON", False),
]
for i, j in combinations(range(3), 2):
required = set(product(values[i], values[j]))
covered = {(case[i], case[j]) for case in cases}
assert covered == required
print("Все пары покрыты")
Для большого числа параметров набор можно строить специализированным генератором, например ACTS. Но генератору тоже нужна правильная модель: осмысленные значения, ограничения совместимости и выбранная сила покрытия. Инструмент не определяет ожидаемое поведение продукта за тестировщика.
Если сочетание EN + JSON + «да» вызывает отдельную ошибку, наша таблица её не проверяет: именно этой тройки здесь нет. Добавьте сценарии важных бизнес-рисков, граничные значения, негативные проверки и переходы состояний независимо от парного покрытия.
Если некоторые сочетания запрещены, нельзя просто удалить неудобную строку: вместе с ней могут пропасть другие допустимые пары. Перестройте набор с ограничениями и проверьте его повторно. Зафиксируйте модель, список сценариев, ожидаемые результаты и фактические исходы раздельно.
На курсе тестирования ПО можно отработать выбор техник тест-дизайна. Если нужна проверка вашей модели параметров, найдите наставника по QA на Mentoring.digital и подготовьте требования вместе с ограничениями сочетаний.