Техніки тест-дизайну: EP, BVA, Pairwise, State Transition

Навіщо потрібні техніки тест-дизайну

Неможливо протестувати все. Техніки тест-дизайну допомагають вибрати мінімальний набір тест-кейсів з максимальним покриттям — без дублювання і пропусків.


1. Equivalence Partitioning (EP) — Розбиття на класи еквівалентності

Ідея

Якщо система однаково обробляє всі значення з певного діапазону — тестуємо один представник від кожного класу.

Алгоритм

  1. Визначити вхідні дані
  2. Розбити на класи: валідні та невалідні
  3. Вибрати по одному значенню з кожного класу

Приклад — поле «Вік» (допустимо 18–65)

КласДіапазонТест-значенняОчікуваний результат
EP1 — невалідний (нижче)< 1810Помилка
EP2 — валідний18–6530Успіх
EP3 — невалідний (вище)> 6580Помилка

Результат: 3 тест-кейси замість 48 (тестувати кожне число від 0 до 100).

Застосовується для

  • Числових полів з діапазоном
  • Рядкових полів (довжина, формат)
  • Списків вибору (dropdown)
  • Дат

2. Boundary Value Analysis (BVA) — Аналіз граничних значень

Ідея

Більшість помилок ховається на межах діапазонів (off-by-one помилки). BVA доповнює EP — замість одного представника класу беремо 3 точки навколо кожної межі.

Формула для кожної межі

межа - 1  →  межа  →  межа + 1

Приклад — поле «Вік» (18–65)

ТочкаЗначенняОчікуваний результатЧому важлива
Нижня - 117ПомилкаРозробник міг написати > замість >=
Нижня межа18УспіхНайкритичніша точка
Нижня + 119УспіхПідтверджує діапазон
Верхня - 164УспіхПідтверджує діапазон
Верхня межа65УспіхРозробник міг написати < замість <=
Верхня + 166ПомилкаПеревірка верхньої межі

Результат: 6 тест-кейсів покривають обидві межі.

EP + BVA разом

EP та BVA завжди використовуються в парі:

  • EP дає класи
  • BVA уточнює значення на межах класів

3. Pairwise Testing — Попарне тестування

Ідея

При кількох параметрах з кількома значеннями — комбінаторний вибух. Pairwise каже: більшість багів виникають через взаємодію двох параметрів. Достатньо покрити всі можливі пари.

Приклад — веб-додаток (3×3×2×2 = 36 комбінацій)

ПараметрЗначення
ОСWindows, macOS, Linux
БраузерChrome, Firefox, Safari
МоваUkrainian, English
ПідпискаFree, Pro

Повне тестування: 36 комбінацій
Pairwise: 9 тест-кейсів

#ОСБраузерМоваПідписка
1WindowsChromeUKFree
2WindowsFirefoxENPro
3WindowsSafariUKPro
4macOSChromeENPro
5macOSFirefoxUKFree
6macOSSafariENFree
7LinuxChromeUKPro
8LinuxFirefoxENFree
9LinuxSafariUKFree

Кожна пара (наприклад Windows+Chrome, Windows+Firefox, macOS+Safari...) зустрічається хоча б раз.

Інструменти для генерації

  • PICT (Microsoft) — безкоштовний CLI
  • AllPairs — онлайн генератор
  • Combinatorial плагін для тест-менеджерів

Застосовується для

  • Форми з кількома незалежними параметрами
  • Конфігураційне тестування (ОС × браузер × версія)
  • Тестування фільтрів і пошуку

4. State Transition Testing — Тестування переходів станів

Ідея

Для систем, які мають стани і переходи між ними. Тестуємо:

  • ✅ Всі валідні переходи (дійсні дії)
  • ❌ Всі невалідні переходи (заборонені дії)

Приклад — система замовлень

[Draft] → (підтвердити) → [Pending] → (відправити) → [Shipping] → (доставити) → [Delivered]

Додатково, скасувати замовлення можна з двох станів:

  • [Draft] → (скасувати) → [Cancelled]
  • [Pending] → (скасувати) → [Cancelled]

Таблиця переходів (тест-кейси)

#З стануДіяВ станРезультат
TC-01DraftПідтвердитиPending✅ Успіх
TC-02DraftСкасуватиCancelled✅ Успіх
TC-03PendingВідправитиShipping✅ Успіх
TC-04PendingСкасуватиCancelled✅ Успіх
TC-05ShippingДоставитиDelivered✅ Успіх
TC-06ShippingСкасувати❌ Помилка
TC-07DeliveredСкасувати❌ Помилка
TC-08CancelledПідтвердити❌ Помилка

Правило: (кількість валідних переходів) + (кількість невалідних) = мінімальний набір тест-кейсів.

Де застосовується

  • Статуси замовлень, задач, тікетів
  • Стани облікового запису (active → suspended → deleted)
  • Сесії авторизації
  • Банкомати, торгові автомати
  • Workflow системи

Коли яку техніку застосовувати

ТехнікаДе застосовуватиК-ть тест-кейсів
EPЧислові поля, рядки, списки з чіткими категоріями~кількість класів
BVAБудь-де, де є числові межі або ліміти6 на пару меж
PairwiseФорми з кількома незалежними параметрами~N·log(N)
State TransitionСтатуси, сесії, workflow, FSM-системи(переходів) × 2

Інші техніки тест-дизайну (для розширення знань)

Decision Table (Таблиця рішень)

Для бізнес-правил з кількома умовами одночасно.

Варіант 1Варіант 2Варіант 3Варіант 4
Умова 1: є знижка?ТакТакНіНі
Умова 2: є купон?ТакНіТакНі
Дія: знижка 20%
Дія: знижка 10%
Дія: без знижки

Error Guessing (Вгадування помилок)

Досвідчений тестувальник вгадує де можуть бути помилки на основі інтуїції:

  • Пусті поля
  • Дуже довгі рядки
  • Спеціальні символи (<script>, '; DROP TABLE)
  • Від'ємні числа там де очікуються позитивні
  • Нульові значення

Питання на співбесіді

«Назвіть техніки тест-дизайну»

EP, BVA, Pairwise, State Transition, Decision Table, Error Guessing, Use Case Testing.

«Чим EP відрізняється від BVA?»

EP ділить вхідні дані на класи і тестує по одному представнику з кожного. BVA уточнює EP — тестує значення прямо на межах класів (межа-1, межа, межа+1), бо саме там найчастіше ховаються off-by-one помилки.

«Коли використовувати Pairwise?»

Коли є кілька незалежних параметрів і повне комбінаторне тестування нереальне. Pairwise скорочує кількість тест-кейсів з N^k до N·log(N), покриваючи всі пари взаємодій.

«Що таке невалідний перехід у State Transition?»

Спроба виконати дію, яка заборонена в поточному стані. Наприклад, скасувати вже доставлене замовлення. Система повинна відхилити таку дію з відповідним повідомленням про помилку.