Тестування методами білої та чорної скрині

Розділ: Інженерія систем і програмного забезпечення

📌 Про що ця тема

Тут перевіряють, чи розумієте ви, як перевіряють якість програм. Ключове поняття — тестування: процес пошуку помилок (дефектів) у програмі. Головний поділ — за тим, чи «бачить» тестувальник внутрішній код: біла скриня (видно код) і чорна скриня (видно лише вхід і вихід).


📖 Головне

• Тестування — процес виконання програми з метою знайти помилки, а не довести, що їх немає. Повна відсутність помилок тестуванням не доводиться.

• Дефект (баг) — відхилення фактичного результату від очікуваного. Очікуваний результат задає специфікація (вимоги).

• Чорна скриня (black box) — тестування без знання коду. Перевіряють лише: даємо вхід → отримуємо вихід → порівнюємо з очікуваним за специфікацією.

• Біла скриня (white box) — тестування зі знанням внутрішньої структури коду. Мета — пройти всі гілки, умови, цикли.

• Сіра скриня (gray box) — проміжний варіант: часткове знання структури.

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

• Методи білої скрині: покриття операторів (кожен рядок виконано хоч раз), покриття гілок/рішень (кожна гілка if і true, і false), покриття шляхів.

• Покриття коду — відсоток коду, виконаного тестами. 100% покриття не гарантує відсутності помилок.

• Тест-кейс — опис: вхідні дані, кроки, очікуваний результат.

• Рівні тестування: модульне (окрема функція) → інтеграційне (взаємодія модулів) → системне → приймальне.


🔢 Як це працює на прикладі

Задача: функція приймає оцінку 1–12 і повертає «склав», якщо ≥ 4.

Чорна скриня, еквівалентні класи: «склав» (4–12), «не склав» (1–3), «некоректно» (0, 13, −5, літери). Беремо по представнику: 7, 2, 100.

Аналіз граничних значень: межа між «не склав» і «склав» — це 3 і 4. Перевіряємо 3, 4, а також краї діапазону 1 і 12 та поряд 0 і 13.

Біла скриня: якщо всередині є if (оцінка >= 4), то для покриття гілок потрібні ОБИДВА випадки: оцінка 5 (true) і оцінка 2 (false). Один тест дав би лише покриття операторів, але не всіх гілок.


⚠️ Типові помилки

• Плутають білу і чорну скриню: біла — бачимо КОД, чорна — бачимо лише ВХІД/ВИХІД. Орієнтир — «чи потрібен доступ до коду».

• Вважають, що 100% покриття коду = немає багів. Покриття не перевіряє пропущені вимоги й невиконані комбінації.

• Плутають покриття операторів і покриття гілок: другий суворіший, вимагає і true, і false для кожної умови.

• Забувають про межі: тестують 5 і 10, але не саму межу (4) та сусідні (3), де й ховаються помилки «< замість <=».

• Думають, що тест доводить правильність. Він лише виявляє помилки за наявними тест-кейсами.


🎯 Що завчити напамʼять

• Чорна скриня = без коду (вхід/вихід); біла = з кодом (гілки/шляхи).

• Методи чорної: еквівалентне розбиття, аналіз граничних значень.

• Методи білої: покриття операторів, гілок, шляхів.

• Рівні: модульне → інтеграційне → системне → приймальне.

• Тестування знаходить помилки, але не доводить їх відсутність.


🧠 Перевір себе

1. До якого виду скрині належить метод аналізу граничних значень?

2. Чим покриття гілок суворіше за покриття операторів?

3. Чи гарантує 100% покриття коду відсутність помилок?

4. Який рівень тестування перевіряє взаємодію кількох модулів?


Відповіді: 1 — чорна скриня (працюємо з вхідними даними, без коду); 2 — вимагає виконати кожну умову і як true, і як false, а не просто пройти рядок; 3 — ні, можуть бути пропущені вимоги й неперевірені комбінації даних; 4 — інтеграційне.

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.