Завдання та цілі процесу верифікації
Спочатку розглянемо цілі верифікації. Основна мета процесу - доказ те, що результат розробки відповідає пред'явленим щодо нього вимогам. Зазвичай процес верифікації проводиться зверху вниз, починаючи від загальних вимог, заданих у технічному завданні та/або специфікації на всю інформаційну систему, і закінчуючи детальними вимогами до програмних модулів та їхньої взаємодії. До складу завдань процесу входить послідовна перевірка того, що у програмній системі:
- загальні вимоги до інформаційної системи, призначені для програмної реалізації, коректно перероблено на специфікацію вимог високого рівня до комплексу програм, що задовольняють вихідним системним вимогам;
- вимоги високого рівня правильно перероблені в архітектуру ПЗ та специфікації вимог до функціональних компонентів низького рівня, які задовольняють вимогам високого рівня;
- специфікації вимог до функціональних компонентів, розташованих між компонентами високого та низького рівня, задовольняють вимогам вищого рівня;
- архітектура ПЗ та вимоги до компонентів низького рівня коректно перероблені в вихідні тексти програмних та інформаційних модулів, що задовольняють їм;
- вихідні тексти програм та відповідний ним виконуваний код не містять помилок.
Крім того, верифікації на відповідність специфікації вимог на конкретний проект програмного засобу підлягають вимогам до технологічного забезпечення життєвого циклу ПЗ, а також вимогам до експлуатаційної та технологічної документації.
Цілі верифікації ПЗ досягаються за допомогою послідовного виконання комбінації з інспекцій проектної документації та аналізу їх результатів, розробки тестовихпланів тестування та тест-вимог, тестових сценаріїв та процедур та подальшого виконання цих процедур. Тестові сценарії призначені для перевірки внутрішньої несуперечності та повноти реалізації вимог. Виконання тестових процедур повинно забезпечувати демонстрацію відповідності програм, що випробовуються, вихідним вимогам.
На вибір ефективних методів верифікації та послідовність їх застосування найбільшою мірою впливають основні характеристики об'єктів, що тестуються:
- клас комплексу програм, що визначається глибиною зв'язку його функціонування з реальним часом та випадковими впливами із зовнішнього середовища, а також вимоги до якості обробки інформації та надійності функціонування;
- складність або масштаб (обсяг, розміри) комплексу програм та його функціональних компонентів, що є кінцевими результатами розробки;
- переважаючі елементи у програмах: здійснюють обчислення складних виразів і перетворення вимірюваних величин або обробляють логічні та символьні дані для підготовки та відображення рішень.
Визначимо деякі поняття та визначення, пов'язані з процесом тестування як складової частини верифікації. Майєрс дає такі визначення основних термінів [2].
Тестування - процес виконання програми з метою виявлення помилки.
Тестові дані - входи, що використовуються для перевірки системи.
Тестова ситуація (test case) - входи для перевірки системи та передбачувані виходи залежно від входів, якщо система працює відповідно до специфікації вимог.
Хороша тестова ситуація - та ситуація, яка має велику ймовірність виявлення поки що невиявленої помилки.
Вдалий тест -тест, який виявляє поки що невиявлену помилку.
Помилка - дія програміста на етапі розробки, що призводить до того, що програмне забезпечення містить внутрішній дефект, який у процесі роботи програми може призвести до неправильного результату.
Відмова - непередбачувана поведінка системи, що призводить до несподіваного результату, що могло бути викликане дефектами, що містяться в ній.
Таким чином, у процесі тестування програмного забезпечення, як правило, перевіряють таке:
- програмне забезпечення відповідає вимогам щодо нього;
- у ситуаціях, не відображених у вимогах, програмне забезпечення поводиться адекватно, тобто немає відмови системи;
- наявність типових помилок, які роблять програмісти.