Приведи пример кейсов попарного тестирования
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Примеры тест-кейсов для попарного тестирования (Pairwise Testing)
Попарное тестирование (Pairwise Testing) — это техника проектирования тестов, которая основана на принципе, что большинство дефектов вызываются взаимодействием двух параметров (пар факторов), а не более сложными комбинациями. Цель — значительно сократить количество тестовых комбинаций при сохранении высокой эффективности покрытия.
Общий подход к созданию кейсов
- Определяем параметры системы и их значения.
- Генерируем набор тестовых комбинаций, где каждая возможная пара значений любых двух параметров встречается хотя бы в одном тесте.
- Ручной расчёт (для простых случаев) или использование инструментов (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 тестов.
Набор тест-кейсов, сгенерированный по методу попарного тестирования (результат работы инструмента или алгоритма):
| № | OS | CPU | RAM | Storage |
|---|---|---|---|---|
| 1 | Windows 11 | Intel i7 | 16 ГБ | SSD |
| 2 | Windows 11 | AMD Ryzen 7 | 32 ГБ | HDD |
| 3 | macOS | Apple M2 | 16 ГБ | HDD |
| 4 | macOS | Intel i7 | 32 ГБ | SSD |
| 5 | Linux | AMD Ryzen 7 | 16 ГБ | SSD |
| 6 | Linux | Apple M2 | 32 ГБ | HDD |
| 7 | Windows 11 | Apple M2 | 32 ГБ | SSD |
| 8 | macOS | AMD Ryzen 7 | 16 ГБ | HDD |
| 9 | Linux | Intel i7 | 32 ГБ | 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 выдаст оптимальный набор парных комбинаций. Результат может выглядеть так:
| Account | Verify | Subscription | Region |
|---|---|---|---|
| Personal | Trial | EU | |
| Business | SMS | Basic | Asia |
| Admin | SMS | Pro | US |
| Personal | None | Pro | Asia |
| Business | Pro | EU | |
| Admin | Basic | Asia | |
| Personal | SMS | Basic | US |
| Business | None | Trial | US |
| ... | ... | ... | ... |
Итог: Мы получили набор, который:
- Проверяет все пары параметров (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-инженера для применения этой техники на практике.