Тестування методами білої та чорної скрині
Розділ: Інженерія систем і програмного забезпечення
📌 Про що ця тема
Тут перевіряють, чи розумієте ви, як перевіряють якість програм. Ключове поняття — тестування: процес пошуку помилок (дефектів) у програмі. Головний поділ — за тим, чи «бачить» тестувальник внутрішній код: біла скриня (видно код) і чорна скриня (видно лише вхід і вихід).
📖 Головне
• Тестування — процес виконання програми з метою знайти помилки, а не довести, що їх немає. Повна відсутність помилок тестуванням не доводиться.
• Дефект (баг) — відхилення фактичного результату від очікуваного. Очікуваний результат задає специфікація (вимоги).
• Чорна скриня (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 — інтеграційне.