QA Interview Hub · База знань · Тести

Manual QA

Техніки тест-дизайну

як вибрати, що тестувати

Що таке класи еквівалентності?

Розбиваємо вхідні дані на групи, де система поводиться однаково, і беремо по одному значенню з кожної групи — валідні й невалідні.

Приклад: сума переказу 1–10 000 грн. Класи: менше 1 (невалідний), 1–10 000 (валідний), понад 10 000 (невалідний), а ще нечислові значення й порожнє поле.

На співбесіді: Ми ділимо вхідні дані на групи, де система поводиться однаково, і тестуємо по одному представнику з кожної, валідні й невалідні. Наприклад, для суми від одного до десяти тисяч — значення в діапазоні, нижче, вище, текст і порожнє поле. Так скорочуємо кількість тестів без втрати покриття.

Що таке аналіз граничних значень?

Баги найчастіше живуть на межах діапазонів, тому тестуємо значення на межі і поруч з нею.

Для 1–10 000: 0, 1, 2 і 9 999, 10 000, 10 001. Для грошей важливі ще дробові межі: 0.99, 1.00, 1.01 і 10 000.00 / 10 000.01.

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

Що таке таблиця рішень і коли її використовувати?

Коли результат залежить від комбінації кількох умов. Кожна колонка — комбінація умов і очікувана дія.

Умова / правило1234
Достатньо коштівТакТакНіНі
Ліміт не перевищеноТакНіТакНі
РезультатПереказВідмова: лімітВідмова: коштиВідмова: кошти

Таблиця одразу показує пропущені комбінації і питання до вимог: яку помилку показати, коли не виконано обидві умови?

На співбесіді: Таблицю рішень я використовую, коли результат залежить від комбінації умов. Виписую всі комбінації й очікуваний результат для кожної. Крім тест-кейсів, це часто дає питання до вимог — наприклад, яку помилку показувати, коли не виконано дві умови одразу.

Що таке тестування переходів станів?

Для об'єктів, які проходять через стани: замовлення, платіж, акаунт. Будуємо діаграму станів і переходів і тестуємо валідні переходи, а також невалідні — що система не дозволяє їх.

Платіж:
  Created → Pending → Authorized → Captured → Settled
                    ↘ Declined
  Captured → Refunded

Невалідні переходи для тесту:
  Declined → Captured    (не можна списати відхилений)
  Refunded → Refunded    (подвійне повернення)
  Created  → Settled     (пропуск кроків)
На співбесіді: Для сутностей зі станами — платежів, замовлень, акаунтів — я малюю діаграму станів і перевіряю всі валідні переходи. А головне — невалідні: що відхилений платіж не можна списати, а повернений — повернути вдруге.

Що таке pairwise-тестування?

Коли параметрів багато і всі комбінації перевірити неможливо. Більшість дефектів викликає взаємодія двох параметрів, тому достатньо покрити всі пари значень, а не всі комбінації.

Приклад: 3 браузери × 3 ОС × 3 мови × 2 типи акаунта = 54 комбінації; pairwise скорочує до ~9–12. Генерують інструментами на кшталт PICT або онлайн-генераторів.

На співбесіді: Pairwise допомагає, коли параметрів забагато для перебору всіх комбінацій. Більшість багів виникає від взаємодії двох параметрів, тому я покриваю всі пари значень. Наприклад, п'ятдесят чотири комбінації браузерів, ОС і мов скорочуються приблизно до десяти, і я генерую їх інструментом.

Що таке error guessing і чеклісти на основі досвіду?

Тестування на основі досвіду: де зазвичай ламається? Порожні поля, пробіли на початку і в кінці, дуже довгі рядки, спецсимволи й емодзі, подвійний клік, кнопка «Назад», оновлення сторінки посеред процесу, втрата мережі, кілька вкладок, відкритих одночасно.

Це доповнення до формальних технік, а не заміна.

На співбесіді: Error guessing — це коли я з досвіду знаю типові місця поломок: порожні поля, спецсимволи, подвійний клік, оновлення сторінки посеред процесу, обрив мережі. Я використовую його разом з формальними техніками, а не замість них.

Класи еквівалентності та граничні значення: вік 18–65

Класи еквівалентності ділять вхідні дані на групи, де система поводиться однаково, тож достатньо одного значення з кожного класу. Для поля «вік 18–65» маємо валідний клас 18–65 і два невалідні: менше 18 та більше 65. Представники: 30, 10 і 80.

Граничні значення перевіряють межі, бо там найчастіше помиляються розробники. Для двоточкового підходу беру 17, 18, 65, 66; для триточкового — 17, 18, 19, 64, 65, 66. Очікувано 18 і 65 приймаються, 17 і 66 — ні.

Додатково перевіряю невалідні типи даних: порожнє поле, 0, від'ємне число, дробове 18.5, літери, пробіли, спецсимволи й дуже довге число. Також варто уточнити в аналітика, чи межі включні, бо це часта неоднозначність у вимогах.

Decision table і state transition

Decision table використовується, коли результат залежить від комбінації кількох умов. Наприклад, знижка: чи є користувач VIP і чи сума замовлення більше 1000 гривень. Будуємо таблицю з усіма комбінаціями умов і очікуваними діями — так видно пропущені або суперечливі правила.

Для n бінарних умов буде 2 в степені n комбінацій, тому таблицю часто скорочують, об'єднуючи правила, де якась умова не впливає на результат. Ця техніка корисна для бізнес-правил, тарифів, прав доступу.

State transition застосовується, коли система має стани й переходи між ними. Приклад — замовлення: New → Paid → Shipped → Delivered, з можливим переходом у Cancelled. Тестуємо всі валідні переходи і перевіряємо, що невалідні заборонені, наприклад скасувати вже доставлене замовлення неможливо.