Попарное тестирование: как составить набор сочетаний и проверить покрытие

Попарное тестирование: как составить набор сочетаний и проверить покрытие
Содержание статьи

Попарное тестирование подбирает набор сценариев так, чтобы каждая допустимая пара значений разных параметров встретилась хотя бы в одном сценарии. Оно сокращает перебор комбинаций, но не доказывает отсутствие ошибок, связанных с тремя параметрами одновременно или с последовательностью действий.

Сначала опишите параметры и результат

Возьмём учебную форму выгрузки отчёта. У неё три независимых параметра: язык интерфейса RU или EN, формат CSV или JSON, включение завершённых задач да или нет. Все сочетания в этой модели допустимы. Полный перебор содержит 2 × 2 × 2 = 8 комбинаций.

Для каждой проверки нужен наблюдаемый результат: выгрузка соответствует выбранному формату, состав задач учитывает переключатель, а интерфейс показывает текст на выбранном языке. Само наличие строки в таблице ещё не означает выполненный тест.

Четыре сценария для покрытия пар

СценарийЯзыкФорматЗавершённые
1RUCSVНет
2RUJSONДа
3ENCSVДа
4ENJSONНет

Рассмотрите параметры «язык + формат»: таблица содержит 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 и подготовьте требования вместе с ограничениями сочетаний.

Похожие статьи по данной теме