- •Лабораторна робота № 1. Попередня оцінка програмного проекту.
- •2. Обчислення функціонально-орієнтованих метрик
- •3. Попередня оцінка програмного проекту.
- •Лабораторна робота № 2. Аналіз чуттєвості програмного проекту.
- •Сценарий понижения зарплаты
- •Сценарий наращивания памяти
- •Сценарий использования нового микропроцессора
- •Сценарий уменьшения средств на завершение проекта
- •Лабораторна робота № 3 Методика Джексона аналізу та проектування пс.
- •Крок 1. Об’єкт – дія.
- •Крок 2. Об’єкт – структура.
- •Крок 3. Початкове моделювання.
- •Крок 4. Довизначення функцій
- •Крок 5. Урахування системного часу
- •Лабораторна робота № 4. Тестування програм методами «білого ящика»
- •Лабораторна робота №5 Тестування програм методами «чорного ящика»
- •Тестування за принципом «чорного ящика»
- •1.1. Еквівалентне розбиття Основу методу складають два положення:
- •Виділення класів еквівалентності
- •Побудова тестів
- •Аналіз граничних значень.
- •Аналіз причинно-наслідкових зв'язків.
- •Припущення про помилку.
- •Приклад застосування методів тестування «чорним ящиком»
- •Загальна стратегія тестування.
Лабораторна робота №5 Тестування програм методами «чорного ящика»
Мета заняття: проаналізувати методи тестування програмних продуктів, оцінити різні методи з точки зору детективності й покриваючої здатності тестів
Теорія:
Тестування за принципом «чорного ящика»
Одним із способів перевірки програм є стратегія тестування, яка називається стратегією "чорного ящика" або тестуванням з управлінням за даними. У цьому випадку програма розглядається як "чорний ящик" і таке тестування має метою з'ясування обставин, в яких поведінка програми не відповідає специфікації.
Для виявлення всіх помилок в програмі необхідно виконати вичерпне тестування, тобто тестування на всіх можливих наборах даних. Для тих же програм, де виконання команди залежить від попередніх їй подій, необхідно перевірити і всі можливі послідовності.
Очевидно, що побудова вичерпного вхідного тесту для більшості випадків неможлива. Тому, зазвичай виконується "розумне" тестування, при якому тестування програми обмежується прогонами на невеликій підмножині всіх можливих вхідних даних. Природньо при цьому доцільно обрати найбільш підходящу підмножину (підмножина з найвищою імовірністю виявлення помилок).
Правильно вибраний тест підмножини повинен володіти наступними властивостями:
1) зменшувати, причому більш ніж на одиницю число інших тестів, які повинні бути розроблені для досягнення заздалегідь визначеної мети «прийнятного» тестування;
2) покривати значну частину інших можливих тестів, що в деякій мірі свідчить про наявність або відсутність помилок до і після застосування цієї обмеженої безлічі значень вхідних даних.
Стратегія "чорного ящика" включає в себе такі методи формування тестових наборів:
еквівалентне розбиття;
аналіз граничних значень;
аналіз причинно-наслідкових зв'язків;
припущення про помилку.
1.1. Еквівалентне розбиття Основу методу складають два положення:
Вихідні дані програми необхідно розбити на кінцеве число класів еквівалентності, так щоб можна було припустити, що кожен тест, який являється представником деякого класу, є еквівалентним будь-якому іншому тесту цього класу. Іншими словами, якщо тест якогось класу виявляє помилку, то припускається, що всі інші тести цього класу еквівалентності теж виявлять цю помилку і навпаки.
Кожен тест повинен включати по можливості максимальну кількість різних вхідних умов, що дозволяє мінімізувати загальне число не обхідних тестів.
Перше положення використовується для розробки набору "цікавих" умов, які повинні бути протестовані, а друге - для розробки мінімального набору тестів.
Розробка тестів методом еквівалентного роздроблення здійснюється в два етапи:
виділення класів еквівалентності;
побудова тестів.
Виділення класів еквівалентності
Класи еквівалентності виділяються шляхом вибору кожної вхідної умови (зазвичай це пропозиція або фраза з специфікації) та розбиттям його на дві або більше груп. Для цього використовується таблиця такого виду:
Вхідна умова |
Правильні класи еквівалентності |
Неправильні класи еквівалентності |
|
|
|
Правильні класи включають правильні дані, неправильні класи - неправильні дані.
Виділення класів еквівалентності є евристичним процесом, але при цьому існує ряд правил:
Якщо вхідні умови описують область значень (наприклад «ціле дане може приймати значення від 1 до 999»), то виділяють один правильний клас 1X999 и два неправильних X<1 и X>999.
Якщо вхідна умова описує число значень (наприклад, «в авто можуть їхати від 1 до 6 чоловік»), то визначається один правильний клас еквівалентності і два неправильних (жодного і більше шести осіб).
Якщо вхідна умова описує безліч вхідних значень і є підстави вважати, що кожне значення програміст трактує особливо (наприклад, «відомі способи пересування на АВТОБУСІ, ТАКСІ, МОТОЦИКЛІ чи ПІШКИ»), то визначається правильний клас еквівалентності для кожного значення і один неправильний клас (наприклад «на причепі»).
Якщо вхідна умова описує ситуацію "повинно бути" (наприклад, «першим символом ідентифікатора повинна бути буква»), то визначається один правильний клас еквівалентності (перший символ - буква) і один неправильний (перший символ - не буква).
Якщо є підстава вважати, що різні елементи класу еквівалентності трактуються програмою неоднаково, то даний клас розбивається на менші класи еквівалентності.
