База знань

Позитивне і негативне тестування

За критерієм правильності вхідних даних виділяють два типи тестування: позитивне і негативне.

Позитивне тестування

“Позитивне” тестування – це тестування на дозволених вхідних даних або сценаріях, які відповідають нормальній (штатній, очікуваній) поведінці системи на допустимих значеннях ( “happy path”).

Основною метою позитивного тестування є перевірка того, що за допомогою системи можна робити те, для чого вона створювалася.

Негативне тестування

“Негативне” тестування – це тестування свідомо помилкових вхідних даних і позаштатних сценаріїв, що виходять за інтервали коректності; перевірка реакції системи на виняткові ситуації ( “exception path”, “позамежні” стани) – перевіряється обробка винятків, виведення повідомлень про помилки, зрозумілість і коректність цих повідомлень.

Основною метою “негативного” тестування є перевірка стійкості системи до впливів різного роду, валідація невірного набору даних, перевірка обробки виняткових ситуацій (як в реалізації самих програмних алгоритмів, так і в логіці бізнес-правил).

У багатьох ресурсах з тестування, при описі послідовності виконання видів тестування, негативне тестування відокремлюють в окрему процедуру, при цьому наводиться наступний приблизний план тестування:

  1. Вивчення документації (для того, щоб зрозуміти що, власне тестуємо).
  2. Димові тестування або Smoke testing (перший прогін програми, щоб зрозуміти чи працює вона взагалі).
  3. Позитивне тестування (для того, щоб перевірити роботу програми при отриманні нею “правильних” вхідних даних).
  4. Негативнетестування.

Умовно і узагальнено процес тестування можна описати наступними кроками:

  1. Перевірити, як працює додаток, коли він отримує на вхід «правильні» дані (щоб дізнатися «що таке добре і що таке погано» читаємо документацію) – це позитивне тестування.
  2. Якщо все працює і працює правильно (відповідно специфікації), наступним кроком є перевірка граничних значень (тобто там, де починаються «правильні» дані і там де вони закінчуються) – це теж позитивне тестування, але тестування граничних значень умовно виділяється в окремий пункт тому, що програмам властиво давати збої на гранично допустимих значеннях;
  3. Перевірка роботи програми при введенні даних, які не входять в область допустимих значень (знову таки, відповідно до специфікації) – це негативне тестування.

Негативне тестування найчастіше дозволяє знайти більшу кількість помилок, але це стає важливим тільки коли всі позитивні тести вже зроблені. Однак, треба пам’ятати, що негативне тестування не менш важливо, ніж позитивне, тому що будь-яким користувачам властиво помилятися і змушувати програму працювати по непередбачених сценаріях. Завжди треба пам’ятати про даний людський фактор.

 

Набагато більше інформації на курсі базовий модуль тестування