← Назад к вопросам

Приведи пример кейсов попарного тестирования

1.0 Junior🔥 182 комментариев
#Инструменты тестирования#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Примеры тест-кейсов для попарного тестирования (Pairwise Testing)

Попарное тестирование (Pairwise Testing) — это техника проектирования тестов, которая основана на принципе, что большинство дефектов вызываются взаимодействием двух параметров (пар факторов), а не более сложными комбинациями. Цель — значительно сократить количество тестовых комбинаций при сохранении высокой эффективности покрытия.

Общий подход к созданию кейсов

  1. Определяем параметры системы и их значения.
  2. Генерируем набор тестовых комбинаций, где каждая возможная пара значений любых двух параметров встречается хотя бы в одном тесте.
  3. Ручной расчёт (для простых случаев) или использование инструментов (AllPairs, PICT, Pairwise.org) для автоматической генерации.

Пример 1: Конфигуратор ПК (Web-форма выбора товара)

Параметры и их значения:

  • Операционная система (OS): Windows 11, macOS, Linux
  • Процессор (CPU): Intel i7, AMD Ryzen 7, Apple M2
  • Объём оперативной памяти (RAM): 16 ГБ, 32 ГБ
  • Тип накопителя (Storage): SSD, HDD

Полное количество всех комбинаций: 3 * 3 * 2 * 2 = 36 тестов.

Набор тест-кейсов, сгенерированный по методу попарного тестирования (результат работы инструмента или алгоритма):

OSCPURAMStorage
1Windows 11Intel i716 ГБSSD
2Windows 11AMD Ryzen 732 ГБHDD
3macOSApple M216 ГБHDD
4macOSIntel i732 ГБSSD
5LinuxAMD Ryzen 716 ГБSSD
6LinuxApple M232 ГБHDD
7Windows 11Apple M232 ГБSSD
8macOSAMD Ryzen 716 ГБHDD
9LinuxIntel i732 ГБSSD

Что мы проверили:

  • Каждая пара значений OS-CPU (например, Windows-Intel, Windows-AMD, macOS-Intel и т.д.) встречается хотя бы в одной строке.
  • Каждая пара OS-RAM и CPU-RAM и т.д. — аналогично.
  • Вместо 36 комбинаций мы выполним только 9 тестов, что экономит 75% усилий.

Пример 2: Форма регистрации пользователя (более сложный случай)

В этом примере некоторые значения параметров могут быть несовместимы. Парное тестирование позволяет это учесть.

Параметры и значения:

  • Тип аккаунта (Account): Personal, Business, Admin
  • Способ верификации (Verify): Email, SMS, None
  • Подписка (Subscription): Trial, Basic, Pro
  • Регион (Region): EU, US, Asia

Ограничение (Constraint): Для Account=Admin способ верификации Verify не может быть None.

Генерация с помощью инструмента Microsoft PICT (текстовый входной файл model.txt):

# model.txt для PICT
Account: Personal, Business, Admin
Verify: Email, SMS, None
Subscription: Trial, Basic, Pro
Region: EU, US, Asia

# Ограничение (правило несовместимости)
IF [Account] = "Admin" THEN [Verify] <> "None";

Запуск в консоли: pict model.txt выдаст оптимальный набор парных комбинаций. Результат может выглядеть так:

AccountVerifySubscriptionRegion
PersonalEmailTrialEU
BusinessSMSBasicAsia
AdminSMSProUS
PersonalNoneProAsia
BusinessEmailProEU
AdminEmailBasicAsia
PersonalSMSBasicUS
BusinessNoneTrialUS
............

Итог: Мы получили набор, который:

  • Проверяет все пары параметров (Account-Verify, Account-Subscription и др.).
  • Автоматически соблюдает бизнес-правило (для Admin нет комбинации с Verify=None).
  • Содержит всего ~10-12 тестов вместо 333*3 = 81.

Пример 3: Тестирование API-метода с входными параметрами

Допустим, есть метод /api/search с параметрами запроса.

Параметры:

  • query (строка): пустая, "тест", "special@char"
  • limit (целое число): 0, 10, 1000
  • sort (перечисление): "asc", "desc", "none"
  • filter (булевый): true, false

Попарный набор (реализация на Python с использованием библиотеки allpairspy):

from allpairspy import AllPairs

parameters = [
    ["", "тест", "special@char"],  # query
    [0, 10, 1000],                  # limit
    ["asc", "desc", "none"],        # sort
    [True, False]                   # filter
]

print("Pairwise тест-кейсы для API /api/search:")
for i, pairs in enumerate(AllPairs(parameters)):
    print(f"Test {i+1}: query={pairs[0]}, limit={pairs[1]}, sort={pairs[2]}, filter={pairs[3]}")

Вывод программы (сокращённо):

Test 1: query=, limit=0, sort=asc, filter=True
Test 2: query=тест, limit=10, sort=desc, filter=False
Test 3: query=special@char, limit=1000, sort=none, filter=True
Test 4: query=, limit=1000, sort=desc, filter=True
Test 5: query=тест, limit=0, sort=none, filter=False
...

В этом наборе каждая пара, например, (limit=0, sort=asc), (query="", filter=True) и т.д., будет покрыта как минимум один раз, а общее число тестов будет близко к оптимальному (≈10-12 вместо 333*2=54).

Ключевые выводы

  • Попарное тестирование — это компромисс между исчерпывающим перебором и риском пропуска дефектов.
  • Наиболее эффективно для:
    *   Конфигурационного тестирования (окружение, настройки).
    *   Тестирования форм с множеством полей и вариантов.
    *   Систем с большим количеством входных параметров.
  • Может не поймать дефекты, вызванные взаимодействием трёх и более параметров (хотя на практике такие ошибки встречаются реже).
  • Инструменты (PICT, AllPairs) — неотъемлемая часть работы QA-инженера для применения этой техники на практике.