Додаткові техніки верифікації та валідації

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

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

Тут перевіряють розуміння того, як переконатися, що програмний продукт працює правильно (верифікація) і що він справді розвʼязує задачу замовника (валідація). Ключові поняття: верифікація, валідація, тестування, рецензування. На іспиті це найчастіше питання на означення й розрізнення понять.


📖 Головне

• Верифікація відповідає на питання «чи ми правильно робимо продукт?» — чи відповідає він технічним вимогам, специфікації, стандартам. Це перевірка проти документації.

• Валідація відповідає на питання «чи ми робимо правильний продукт?» — чи задовольняє він реальні потреби користувача. Це перевірка проти очікувань замовника.

• Верифікація зазвичай передує валідації й триває на кожному етапі розробки.

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

• Статичні методи — аналіз без запуску коду: рецензування (review), інспекція коду, аналіз документації, статичний аналіз.

• Динамічні методи — перевірка під час виконання: модульне (unit), інтеграційне, системне, приймальне тестування.

• Модульне тестування перевіряє окрему функцію/модуль; інтеграційне — взаємодію модулів; системне — продукт загалом; приймальне — готовність для замовника.

• Регресійне тестування — повторна перевірка після змін, щоб переконатися, що старий функціонал не зламався.

• Тестування «чорної скриньки» — без знання внутрішньої структури, лише вхід–вихід. «Білої скриньки» — з аналізом внутрішнього коду й шляхів виконання.

• Додаткові техніки: альфа-тестування (всередині команди/організації), бета-тестування (реальні користувачі до релізу), навантажувальне (поведінка під великим навантаженням), юзабіліті-тестування (зручність для користувача).

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


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

Задача: калькулятор, функція ділення.

• Верифікація: звіряємо з ТЗ — у вимозі сказано «ділення на 0 видає повідомлення про помилку». Інспекція коду показує, що обробка нуля є → вимога реалізована.

• Модульний тест (біла скринька): вхід 10 і 2 → очікуємо 5; вхід 10 і 0 → очікуємо повідомлення про помилку. Запускаємо — обидва проходять.

• Валідація: показуємо готовий калькулятор замовнику. Той каже: «мені потрібне було ще округлення до 2 знаків». Код коректний, але продукт не той → валідація виявила невідповідність потребі.

Висновок: тести пройшли (верифікація успішна), але валідація вказала на прогалину у вимогах.


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

• Плутають верифікацію й валідацію: верифікація — проти специфікації, валідація — проти потреб користувача.

• Вважають, що тестування = валідація. Тестування — метод, воно обслуговує і верифікацію, і валідацію.

• Плутають «чорну» й «білу» скриньку: чорна — без коду, біла — з кодом.

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

• Думають, що статичні методи обовʼязково запускають програму — ні, вони без виконання.


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

• Верифікація — «правильно робимо продукт» (проти вимог).

• Валідація — «правильний продукт» (проти потреб).

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

• Чорна скринька = вхід/вихід; біла = внутрішній код.

• Альфа — своя команда, бета — зовнішні користувачі.


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

1. Чим відрізняється верифікація від валідації?

2. Яке тестування перевіряє взаємодію модулів?

3. Статичний чи динамічний метод — рецензування коду?

4. Хто бере участь у бета-тестуванні?


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

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

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