Додаткові техніки верифікації та валідації
Розділ: Інженерія систем і програмного забезпечення
📌 Про що ця тема
Тут перевіряють розуміння того, як переконатися, що програмний продукт працює правильно (верифікація) і що він справді розвʼязує задачу замовника (валідація). Ключові поняття: верифікація, валідація, тестування, рецензування. На іспиті це найчастіше питання на означення й розрізнення понять.
📖 Головне
• Верифікація відповідає на питання «чи ми правильно робимо продукт?» — чи відповідає він технічним вимогам, специфікації, стандартам. Це перевірка проти документації.
• Валідація відповідає на питання «чи ми робимо правильний продукт?» — чи задовольняє він реальні потреби користувача. Це перевірка проти очікувань замовника.
• Верифікація зазвичай передує валідації й триває на кожному етапі розробки.
• Тестування — основний метод: запуск програми з вхідними даними й порівняння результату з очікуваним.
• Статичні методи — аналіз без запуску коду: рецензування (review), інспекція коду, аналіз документації, статичний аналіз.
• Динамічні методи — перевірка під час виконання: модульне (unit), інтеграційне, системне, приймальне тестування.
• Модульне тестування перевіряє окрему функцію/модуль; інтеграційне — взаємодію модулів; системне — продукт загалом; приймальне — готовність для замовника.
• Регресійне тестування — повторна перевірка після змін, щоб переконатися, що старий функціонал не зламався.
• Тестування «чорної скриньки» — без знання внутрішньої структури, лише вхід–вихід. «Білої скриньки» — з аналізом внутрішнього коду й шляхів виконання.
• Додаткові техніки: альфа-тестування (всередині команди/організації), бета-тестування (реальні користувачі до релізу), навантажувальне (поведінка під великим навантаженням), юзабіліті-тестування (зручність для користувача).
• Тест-кейс — набір умов, вхідних даних та очікуваного результату для перевірки конкретної вимоги.
🔢 Як це працює на прикладі
Задача: калькулятор, функція ділення.
• Верифікація: звіряємо з ТЗ — у вимозі сказано «ділення на 0 видає повідомлення про помилку». Інспекція коду показує, що обробка нуля є → вимога реалізована.
• Модульний тест (біла скринька): вхід 10 і 2 → очікуємо 5; вхід 10 і 0 → очікуємо повідомлення про помилку. Запускаємо — обидва проходять.
• Валідація: показуємо готовий калькулятор замовнику. Той каже: «мені потрібне було ще округлення до 2 знаків». Код коректний, але продукт не той → валідація виявила невідповідність потребі.
Висновок: тести пройшли (верифікація успішна), але валідація вказала на прогалину у вимогах.
⚠️ Типові помилки
• Плутають верифікацію й валідацію: верифікація — проти специфікації, валідація — проти потреб користувача.
• Вважають, що тестування = валідація. Тестування — метод, воно обслуговує і верифікацію, і валідацію.
• Плутають «чорну» й «білу» скриньку: чорна — без коду, біла — з кодом.
• Плутають інтеграційне й системне тестування: інтеграційне — взаємодія модулів, системне — продукт цілком.
• Думають, що статичні методи обовʼязково запускають програму — ні, вони без виконання.
🎯 Що завчити напамʼять
• Верифікація — «правильно робимо продукт» (проти вимог).
• Валідація — «правильний продукт» (проти потреб).
• Рівні: модульне → інтеграційне → системне → приймальне.
• Чорна скринька = вхід/вихід; біла = внутрішній код.
• Альфа — своя команда, бета — зовнішні користувачі.
🧠 Перевір себе
1. Чим відрізняється верифікація від валідації?
2. Яке тестування перевіряє взаємодію модулів?
3. Статичний чи динамічний метод — рецензування коду?
4. Хто бере участь у бета-тестуванні?
Відповіді: 1 — верифікація перевіряє відповідність специфікації, валідація — відповідність потребам користувача; 2 — інтеграційне; 3 — статичний (без запуску); 4 — реальні зовнішні користувачі до офіційного релізу.