Проектування алгоритму тестування ПЗ
Затребуване тестування програм включає три стадії:
1. проектування;
2. виконання;
3. аналіз.
Кваліфікована команда розробників на стадії проектування намагається вирішити проблему пошуку і підбору як можна більшого числа тестів, які зможуть виявити максимально можливу кількість помилок в роботі програми. На стадії виконання тестів виявляються помилки в даному протестованому ПЗ. Аналіз дозволяє зробити висновки і отримати рекомендації.
Прийнято дві методології, які забезпечують тестування програмного забезпечення, названі «чорним» і «білим» скриньками:
· Метод «чорної» скриньки, або функціональне тестування, припускає проведення тестів без врахування тексту програми. У цьому випадку перевіряється відповідність роботи програми щодо її зовнішньої специфіки. Для отримання повної картини тесту намагаються перебрати всі допустимі значення стартових даних, щоб збільшити ймовірність виявлення якомога більшої кількості помилок.
· Метод «білої» скриньки, або структурне тестування, перевіряє роботу програмного продукту на предмет коректного та логічного функціонування у відповідності з тим алгоритмічним мовою, на якому він був написаний. Фахівці з тестування намагаються не обмежуватися перевіркою тільки лінійних шляхів роботи ПО, так як в дійсності можуть бути пропущені необхідні розгалуження або робота програми може відрізнятися при коректно / некоректно введених даних.
Застосовують автоматизовані засоби перевірки для етапів тестування:
· Функціональних вимог;
· Окремих модулів;
· Користувальницького інтерфейсу;
· Швидкості завантаження самої системи;
· Витоку пам'яті;
· Граничних умов та ін
Тестування будь-якого ПЗ проходить за трьома напрямками:
1. Візуальна перевірка коду на наявність помилок, реакція і поведінка програми в різних ситуаціях;
2. Перевірка високого рівня, яка передбачає спостереження за функціонуванням системи, включаючи діалог з користувачем, реакцію на події з видачею повідомлень, збереження інформації;
3. Перевірка низького рівня, при якій тестер перевіряє логічну повноту вихідного коду програмного продукту для всіх можливих варіантів роботи системи.
При розробці програм найбільш трудомістким є етап налагодження і тестування програм. Мета тестування, тобто випробування програми, полягає у виявленні наявних в програмі помилок. Мета налагодження полягає у виявленні та усуненні причин помилок.
Налагодження програми починають з складання плану тестування. Такий план повинен уявляти собі будь-який програміст.
Складання плану спирається на поняття про джерела і характер помилок. Основними джерелами помилок є недостатньо глибоке опрацювання математичної моделі або алгоритму розв'язання задачі; порушення відповідності між схемою алгоритму або записом його на алгоритмічній мові і програмою, записаною на мові програмування; невірне уявлення вихідних даних на програмному бланку; неуважність при наборі програми і вихідних даних на клавіатурі пристрої введення.
Порушення відповідності між детально розробленої записом алгоритму в процесі кодування програми відноситься до помилок, які проходять унаслідок неуважності програміста. Відключення уваги призводить і до всіх інших помилок, що виникають в процесі підготовки вихідних даних і введення програми в ЕОМ. Помилки, що виникають внаслідок неуважності, можуть мати непередбачувані наслідки, так як поряд з втратою міток і описів масивів, дублюванням міток, порушенням балансу дужок можливі і такі помилки, як втрата операторів, заміна букв у позначеннях змінних, відсутність визначень початкових значень змінних, порушення адресації в масивах, зсув вихідних даних відносно полів значень, визначених специфікаціями формату.
Враховуючи різноманітність джерел помилок, при складанні плану тестування класифікують помилки на два типи:
1. синтаксичні;
2. семантичні (смислові).
Синтаксичні помилки - це помилки в записі конструкцій мови програмування (чисел, змінних, функцій, виразів, операторів, міток, підпрограм). Виявлення більшості синтаксичних помилок автоматизовано в основних системах програмування
Семантичні помилки - це помилки, пов'язані з неправильним змістом дій і використанням неприпустимих значень величин. Пошук же семантичних помилок набагато менш формалізований; частина їх проявляється при виконанні програми в порушеннях процесу автоматичних обчислень та індикується або видачею діагностичних повідомлень робочої програми, або відсутністю друку результатів через нескінченного повторення однієї і тієї ж частини програми (зациклення), або появою непередбачуваної форми або змісту друку результатів.
У план тестування зазвичай входять наступні етапи:
· Порівняння програми зі схемою алгоритму.
· Візуальний контроль програми на екрані дисплея або візуальне вивчення роздруківки програми і порівняння її з оригіналом на програмному бланку. Перші два етапи тестування здатні усунути більше кількість помилок, як синтаксичних (що не так важливо), так і семантичних (що дуже важливо, тому що дозволяє виключити їх трудомісткий пошук в процесі подальшого налагодження).
· Трансляція програми на машинних мову. На цьому етапі виявляються синтаксичні помилки. Компілятори з мов Сі, Паскаль видають діагностичне повідомлення про синтаксичні помилки в лістингу програми (лістингом називається вихідний документ транслятора, супроводжуючий від транслювати програму на машинній мові - об'єктний модуль).
· Редагування зовнішніх зв'язків і компоновка програми. На етапі редагування зовнішніх зв'язків програмних модулі програма-редактор зовнішніх зв'язків, або компонувальних завдань, виявляє такі синтаксичні помилки, як невідповідність числа параметрів в описі підпрограми і зверненні до неї, виклик неіснуючої стандартної програми. наприклад, 51 H замість 51 N, різні довжини спільного блоку пам'яті в зухвалій і викликається модулі і ряд інших помилок.
· Виконання програми. Після усунення виявлених транслятором і редактором зовнішніх зв'язків (компонувальником завдань) синтаксичних помилок переходять до наступного етапу - виконанню програми на ЕОМ на машинній мові: програма завантажується в оперативну пам'ять, у відповідність з програмою вводяться вихідні дані і починається рахунок. Прояв помилки в процесі вода вихідних даних або в процесі рахунку призводить до переривання рахунки і видачі діагностичного повідомлення робочої програми. Прояв помилки дає привід для виконання налагоджувальних дій; відсутність же повідомлень про помилки не означає їх відсутності в програмі. План тестування включає при цьому перевірку правильності отриманих результатів для будь-яких допустимих значень вихідних даних.
· Тестування програми. Якщо програма виконується успішно, бажано завершити її випробування тестуванням при завданні вихідних даних, що приймають граничні для програми значення. а також виходять за допустимі межі значення на вході.