You are on page 1of 22

ТЕСТУВАННЯ ПРОГРАМНОГО

ЗАБЕЗПЕЧЕННЯ

1. Основні поняття і принципи тестування


2. Тестування «чорного ящика»
3. Тестування «білого ящика»
4. Тестування циклів
У цьому розділі визначаються загальні поняття і
принципи тестування ПО (принцип «чорного
ящика» і принцип «білого ящика»). Читач
знайомиться з вмістом процесу тестування,
після цього його увага концентрується на
особливостях структурного тестування
програмного забезпечення (за принципом
«білого ящика»), описуються його переваги і
недоліки. Далі розглядаються найбільш
популярні способи структурного тестування:
тестування базового шляху, тестування гілок і
операторів відносин, тестування потоків даних,
тестування циклів.
Основні поняття і принципи
тестування ПЗ
• Інша назва тесту - тестовий варіант. Повну перевірку
програми гарантує вичерпне тестування. Воно
вимагає перевірити всі набори вихідних даних, всі
варіанти їх обробки і включає велику кількість тестових
варіантів. На жаль, але вичерпне тестування в багатьох
випадках залишається тільки мрією - спрацьовують
ресурсні обмеження (перш за все, обмеження за
часом).
• Хорошим вважають тестовий варіант з високою
ймовірністю виявлення ще не розкритою
помилки. Успішним називають тест, який виявляє до
сих пір не розкриту помилку.
Метою проектування тестових варіантів є систематичне
виявлення різних класів помилок при мінімальних витратах
часу і вартості.
Важливий відповідь на питання: що може тестування?
Тестування забезпечує:
 виявлення помилок;
 демонстрацію відповідності функцій програми її
призначенням;
 демонстрацію реалізації вимог до характеристик
програми;
 відображення надійності як індикатора якості
програми.
А чого не може тестування? Тестування не може показати
відсутність дефектів (воно може показувати тільки присутність
дефектів). Важливо пам'ятати це (швидше за сумне)
твердження при проведенні тестування.
Інформаційні потоки процесу
тестування
• На вході процесу тестування три потоки:
•  текст програми;
•  вихідні дані для запуску програми;
•  Очікувані результати.
• Виконуються тести, всі отримані результати оцінюються. Це означає, що
реальні результати тестів порівнюються з очікуваними
результатами. Коли виявляється розбіжність, фіксується помилка -
починається налагодження. Процес налагодження непередбачуваний за
часом. На пошук місця дефекту і виправлення може знадобитися годину,
день, місяць. Невизначеність в налагодженні призводить до великих
труднощів в плануванні дій.
• Після збору і оцінювання результатів тестування починається
відображення якості і надійності ПЗ. Якщо регулярно зустрічаються
серйозні помилки, що вимагають проектних змін, то якість і надійність ПО
підозрілі, констатується необхідність посилення тестування. З іншого
боку, якщо функції ПО реалізовані правильно, а виявлені помилки легко
виправляються, може бути зроблений один з двох висновків:
•  якість і надійність ПО задовільні;
•  тести не здатні виявляти серйозні
• В кінцевому рахунку, якщо тести не виявляють
помилок, починаєш сумніватися в тому, що тестові
варіанти досить продумані і що в ПО немає прихованих
помилок. Такі помилки будуть, в кінцевому підсумку,
виявлятися користувачами і коригуватися розробником
на етапі супроводу (коли вартість виправлення зростає
в 60-100 разів у порівнянні з етапом розробки).
• Результати, накопичені в ході тестування, можуть
оцінюватися і більш формальним способом. Для цього
використовують моделі надійності ПЗ, що виконують
прогноз надійності за реальними даними про
інтенсивність помилок.
• Існують 2 принципу тестування програми:
•  функціональне тестування (тестування «чорного
ящика»);
•  структурне тестування (тестування «білого
ящика»).
Тестування «чорного ящика»
• Відомі: функції програми.
• Досліджується: робота кожної функції на всій області
визначення.
основне місце для вкладання тестів «чорного ящика» -
інтерфейс ПО.
• Ці тести демонструють:
•  як виконуються функції програм;
•  як приймаються вихідні дані;
•  як виробляються результати;
•  як зберігається цілісність зовнішньої інформації.
• При тестуванні «чорного ящика» розглядаються
системні характеристики програм, ігнорується їх
внутрішня логічна структура. Повне тестування, як
правило, неможливо. Наприклад, якщо в програмі 10
вхідних величин і кожна приймає по 10 значень, то буде
потрібно 10 10 тестових варіантів. Відзначимо також, що
тестування «чорного ящика» не реагує на багато
особливостей програмних помилок.
Тестування «білого ящика»
• Відома: внутрішня структура програми.
• Досліджуються: внутрішні елементи
програми і зв'язку між ними (рис. 6.3).
Об'єктом тестування тут є не зовнішнє, а
внутрішнє поведінку програми. Перевіряється
коректність побудови всіх елементів програми і
правильність їх взаємодії один з
одним. Зазвичай аналізуються керуючі зв'язку
елементів, рідше - інформаційні
зв'язки. Тестування за принципом «білого
ящика» характеризується ступенем, в якій тести
виконують або покривають логіку (вихідний
текст) програми. Повне тестування також
важко. .
Особливості тестування «білого
ящика»
• Зазвичай тестування «білого ящика» засноване на аналізі
керуючої структури програми [2], [13]. Програма
вважається повністю перевіреної, якщо проведено
вичерпне тестування маршрутів (шляхів) її графа
управління.
• В цьому випадку формуються тестові варіанти, в яких:
•  гарантується перевірка всіх незалежних маршрутів
програми;
•  проходяться гілки True, False для всіх логічних
рішень;
•  виконуються всі цикли (в межах їх кордонів і
діапазонів);
•  аналізується правильність внутрішніх структур
даних
• Недоліки тестування «білого ящика»:
• 1. Кількість незалежних маршрутів може бути дуже
велике. Наприклад, якщо цикл в програмі виконується kраз, а
всередині циклу є п розгалужень, то кількість маршрутів
обчислюється за формулою
• .
• При п = 5 і k = 20 кількість маршрутів т = 10 14. Приймемо, що на
розробку, виконання та оцінку тесту по одному маршруту
витрачається 1 мс. Тоді при роботі 24 години на добу 365 днів у
році на тестування піде 3170 років.
• 2. Повне тестування маршрутів не гарантує відповідності
програми вихідним вимогам до неї.
• 3. У програмі можуть бути пропущені деякі маршрути.
• 4. Не можна виявити помилки, поява яких залежить від
даних (це помилки, обумовлені виразами типу if abs(a -
b) <eps ..., if (a + b + c) / 3 = a ...).
• Переваги тестування «білого ящика» пов'язані з тим, що
принцип «білого ящика» дозволяє врахувати особливості
програмних помилок:
• Кількість помилок мінімально в «центрі» і максимально
на «периферії» програми.
• 2. Попередні припущення про ймовірності
потоку управління або даних в програмі часто бувають
некоректними. В результаті типовим може стати
маршрут, модель обчислень за яким опрацьована
слабо.
• 3. При записи алгоритму ПО у вигляді тексту на
мові програмування можливе внесення типових
помилок трансляції (синтаксичних і семантичних).
• 4. Деякі результати в програмі залежать не від
вихідних даних, а від внутрішніх станів програми.
• Кожна з цих причин є аргументом для проведення
тестування за принципом «білого ящика». Тести
«чорного ящика» не зможуть реагувати на помилки
таких типів.

Тестування циклів
• Цикл - найбільш поширена конструкція
алгоритмів, що реалізуються в
ПО. Тестування циклів проводиться за
принципом «Білого ящика», при перевірці
циклів основна увага звертається на
правильність конструкцій циклів.
• Розрізняють 4 типи циклів: прості, вкладені,
об'єднані, неструктуровані. Структура
циклів приведена на рис. 6.10.
Види циклів
прості цикли
• Для перевірки простих циклів з кількістю
повторень п може використовуватися один з
наступних наборів тестів:
• 1) прогін всього циклу;
• 2) тільки один прохід циклу;
• 3) два проходи циклу;
• 4) т проходів циклу, де т <п;
• 5) п - 1, п, п + 1 проходів циклу
вкладені цикли
Зі збільшенням рівня вкладеності циклів кількість можливих
шляхів різко зростає. Це призводить до нереалізованим
кількості тестів. Для скорочення кількості тестів застосовується
спеціальна методика, в якій використовуються такі поняття, як
осяжний і вкладений цикли (рис.).
Кроки тестування вкладених циклів
• Кроки тестування.
• 1. Вибирається самий внутрішній
цикл. Встановлюються мінімальні значення
параметрів всіх інших циклів.
• 2. Для внутрішнього циклу проводяться тести
простого циклу. Додаються тести для виключених
значень і значень, що виходять за межі робочого
діапазону.
• 3. Переходять в наступний по порядку осяжний
цикл. Виконують його тестування. При цьому
зберігаються мінімальні значення параметрів для всіх
зовнішніх (осяжний) циклів і типові значення для всіх
вкладених циклів.
• 4. Робота триває до тих пір, поки не будуть
протестовані всі цикли.
Об'єднані цикли
Якщо кожен з циклів незалежний від інших, то
використовується техніка тестування простих
циклів. При наявності залежності (наприклад, кінцеве
значення лічильника першого циклу використовується
як початкове значення лічильника другого циклу)
використовується методика для вкладених циклів.
• неструктуровані цикли

• Неструктуровані цикли тестування не підлягають. Цей
тип циклів повинен бути перероблений за допомогою
структурованих програмних конструкцій.
ЛІТЕРАТУРА:
1. С. А. Орлов Технология разработки
программного обеспечения.
Разработка сложных программных
систем. Питер 2003 г.
2. С. А. Орлов Програмная инженерия
Питер 2016 г.

• Вивчити:
1. Методики структурного і
функціонального тестування
програмних систем.

Опрацювати [1] Глава 6, [2] Глава


14-15

You might also like