Page 226 - 4505
P. 226
Відладка програми — це процес пошуку і усунення помилок в програмі, вироблюваний за
наслідками її прогону на комп'ютері.
Англійський термін debugging ("відладка") буквально означає "вилов жучків". Термін
з'явився в 1945 р., коли один з перших комп'ютерів — "Марк-1" припинив роботу через те, що в
його електричні ланцюги потрапив метелик і заблокував своїми останками одна з тисяч реле
машини.
У сучасних програмних системах відладка здійснюється часто з використанням
спеціальних програмних засобів, званих відладчиками. Ці засоби дозволяють досліджувати
внутрішню поведінку програми.
Программа-отладчик зазвичай забезпечує наступні можливості:
покрокового виконання програми із зупинкою після кожної команди (оператора);
проглядання поточного значення будь-якою змінною або знаходження значення будь-
якого виразу, зокрема, з використанням стандартних функцій; при необхідності можна
встановити нове значення змінної;
установку в програмі "Контрольних крапок", тобто крапок, в яких програма тимчасово
припиняє своє виконання, так що можна оцінити проміжні результати, і ін.
При відладці програм важливо пам'ятати наступне:
на початку процесу відладки треба використовувати прості тестові дані;
виникаючі утруднення слід чітко розділяти і усувати строго по черзі;
не потрібно вважати за причину помилок машину, оскільки сучасні машини і
транслятори володіють надзвичайно високою надійністю.
Тестування (англ. test — випробування) — це випробування, перевірка правильності
роботи програми в цілому, або її складових частин.
Як би не була ретельно відладжена програма, вирішальним етапом, що встановлює її
придатність для роботи, є контроль програми за наслідками її виконання на системі тестів.
Програму умовно можна вважати за правильну, якщо її запуск для вибраної системи тестових
початкових даних у всіх випадках дає правильні результати.Але, як справедливо указував
відомий теоретик програмування Е. Дейкстра, тестування може показати лише наявність
помилок, але не їх відсутність. Нерідкі випадки, коли нові вхідні дані викликають "відмову" або
отримання невірних результатів роботи програми, яка вважалася за повністю відладжену.
Для реалізації методу тестів мають бути виготовлені або заздалегідь відомі еталонні
результати.
Тестові дані повинні забезпечити перевірку всіх можливих умов виникнення помилок:
має бути випробувана кожна гілка алгоритму;
черговий тестовий прогін повинен контролювати щось таке, що ще не було перевірене на
попередніх прогонах;
перший тест має бути максимально простий, щоб перевірити, чи працює програма
взагалі;
арифметичні операції в тестах повинні гранично спрощуватися для зменшення об'єму
обчислень;
кількості елементів послідовностей, точність для ітераційних обчислень, кількість
проходів циклу в тестових прикладах повинні задаватися з міркувань скорочення об'єму
обчислень;
мінімізація обчислень не повинна знижувати надійності контролю;
тестування має бути цілеспрямованим і систематизованим, оскільки випадковий вибір
початкових даних привів би до труднощів у визначенні ручним способом очікуваних
результатів; крім того, при випадковому виборі тестових даних можуть виявитися
неперевіреними багато ситуацій;
ускладнення тестових даних повинне відбуватися поступово.
222