Структурне тестування
Структу́рне тестува́ння, також називають тестуванням за принципом «білої скриньки» або «скляної скриньки» (англ. White box testing або англ. Glass box testing), полягає у перевірці внутрішньої структури елементів системи.
Основним видом тестування є функціональне. Функціональне тестування застосовують для програмного забезпечення у цілому, а також для програмних об’єктів будь-якого рівня (процедури, модулі, підсистеми, системи). Структурне тестування доповнює функціональне. Цей вид тестування можливий для рівня не вище рівня програмного модуля. Виконання функціонального і структурного тестування системи може бути здійснене незалежно одне від одного.
Методи структурного тестування
Структурне тестування програмного забезпечення може бути реалізоване такими методами[1]:
- тестуванням маршрутів;
- тестуванням циклів;
- тестуванням обробки даних.
Тестування маршрутів
Тестування структури маршрутів програмних модулів виконують шляхом перевірки коректності виділених маршрутів виконання програм і виявлення логічних помилок формування маршрутів. На практиці за відсутності впорядкованого аналізу потоків управління деякі маршрути у програмі (до 50%) виявляються пропущеними під час тестування. Тому перше завдання, яке вирішують під час тестування структури програмних модулів, — це отримання інформації про повну сукупність реальних маршрутів виконання. Наочне подання реалізованих маршрутів дозволяє впорядковано контролювати повноту їхнього тестування та до деякої міри охороняє від випадкового пропуску окремих маршрутів. У результаті тестування набуває запланованого систематичного характеру. Для забезпечення коректності програми всі маршрути можливого виконання програмного модуля повинні бути перевірені під час її створення та тим самим визначають складність повного тестування.
Тестування циклів
Наявність циклів у програмних модулях здатне різко збільшувати складність їхнього тестування. Повне, вичерпне тестування повинне охоплювати перевірку кожного маршруту у циклі за усіх можливих ітерацій циклу та для усіх сполучень циклів з маршрутами ациклічної частини програми. На складність тестування циклу впливає його структура та два параметри: число маршрутів у тілі циклу та число ітерацій циклу. За умови зростання кожного з цих параметрів пропорційно зростає їхній добуток, а отже, і складність тестування. Тому вичерпне тестування реальних складних програм із циклами практично неможливе.
Тестування обробки даних
Функціонування будь-якої програми можна розглядати як обробку потоку даних, переданих від входу у програму до її виходу. Вхідні дані послідовно використовуються для визначення ряду проміжних результатів аж до одержання необхідного набору вихідних даних.
Наслідки помилок у програмі можуть проявлятися як зміни деяких змінних у процесі обчислень і як повне перекручування або відсутність на виході величин, що вимагаються. Тестування програмного модуля доцільно проводити на впорядкованих наборах даних з урахуванням ступеня їхнього впливу на вихідні результати.