Перевіряти роботу тільки зміненої підпрограми недостатньо! Недостатньо повне тестування такого роду підвищує ймовірність невдач.
Проведемо порівняння низхідного і висхідного тестування [Таблиця 1].
Значне підвищення коректності та надійності програм досягається застосуванням подвійного або N-кратного програмування (Duplication Check - подвійний прорахунок, подвійна перевірка).
При цьому методі при різних алгоритмах і на різних мовах програмування створюється кілька варіантів програми. Ці варіанти реалізують одні й ті ж функції і за певних тестових даних повинні видавати тотожні результати. Різниця результатів при тестуванні вказує на наявність помилок, принаймні, в одному з варіантів. Зазвичай при розробці варіантів програми використовується один і той же алгоритм, але програми створюються на різних мовах, різних комп'ютерах і різними програмістами. На практиці застосовується програмування з N=2. Практично дуже рідкісні випадки, коли реальна програма створювалася в трьох і більше варіантах.
На закінчення зазначимо, що якщо виконання тесту приносить результати, які не відповідають передбачуваним, то це означає, що:
· Або модуль має помилку;
· Або невірні передбачувані результати (помилки в тесті).
Для усунення такого роду непорозумінь потрібно ретельно перевіряти набір тестів ( тестувати тести).
. Тестування методами «білого», «чорного» і «сірого ящика»
5.1 Тестування методом «білого ящика»
При тестуванні методом «білого ящика» розробник тесту має доступ до вихідного тестируемому кодом і може компонувати з ним код тестів. Така ситуація типова для модульного тестування, при якому тестуються тільки окремі частини системи. При тестуванні методом «білого ящика» може використовуватися знання про внутрішній устрій перевіряється ПЗ, у тому числі і для організації перевірки обробки допустимих, граничних і некоректних даних. Крім того, даний вид тестування дозволяє оцінити рівень покриття коду тестами.
Термін білий ящик означає, що при розробці тестових випадків тестувальники використовують будь-які доступні відомості про внутрішню структуру чи коді. Технології, застосовувані під час тестування білого ящика raquo ;, зазвичай називають технологіями статичного тестування.
Цей метод не ставить мети виявлення синтаксичних помилок, так як дефекти такого роду звичайно виявляє компілятор. Методи білого ящика спрямовані на локалізацію помилок, які складніше виявити, знайти і зафіксувати. З їх допомогою можна виявити логічні помилки і перевірити ступінь покриття тестами.
Тестові процедури, пов'язані з використанням стратегії білого ящика, використовують керуючу логіку процедур. Вони надають ряд послуг, в тому числі:
· Дають гарантію того, що всі незалежні шляхи в модулі перевірені принаймні один раз.
· Перевіряють всі логічні рішення на предмет того, істини вони чи хибні.
· Виконують всі цикли всередині операційних кордонів і з використанням граничних значень.
· Досліджують структури внутрішніх даних із цілі перевірки їх достовірності.
Тестування допомогою білого ящика, як правило, включає в себе стратегію модульного тестування, при якому тестування ведеться на модульному або функціональному рівні та роботи з тестування направлені на дослідження внутрішнього устрою модуля. Даний тип тестування називають також модульним тестуванням, тестуванням прозорого ящика (clear box) або прозорим (translucent) тестуванням, оскільки співробітники, які проводять тестування, мають доступ до програмного коду і можуть бачити роботу програми зсередини. Даний підхід до тестування відомий також як структурний підхід.
На цьому рівні тестування перевіряється керуюча логіка, що виявляється на модульному рівні. Тестові драйвери використовуються для того, щоб всі шляхи в даному модулі були перевірені хоча б один раз, всі логічні рішення розглянуті у всіляких умовах, цикли були виконані з використанням верхніх і нижніх меж і роконтроліровани структури внутрішніх даних.
Методи тестування на основі стратегії білого ящика:
· Ввід невірних значень. При введенні невірних значень тестувальник змушує коди повернення показувати помилки і дивиться на реакцію коду. Це хороший спосіб моделювання певних подій, наприклад переповнення диска, нестачі пам'яті й т.д. Популярним методом є заміна alloc () функцією, яка повертає значення NULL в 10% випадків з метою з'ясування, скільки збоїв буде в результаті. Такий підхід ще називають тестуванням помилкових вхідних даних. При та...