Позитивний і негативний тести з прикладами
⚡ Розумний підсумок
Позитивне та негативне тестування разом вирішують, чи приймає програмне забезпечення те, що повинно, і відхиляє те, що не повинно. У цій статті пояснюються обидва підходи, методи, що лежать в їх основі, практичні приклади та методи, які забезпечують низький рівень витоку дефектів.

Тестування програмного забезпечення – це процес перевірки та валідації програмного застосунку, щоб визначити, чи працює він належним чином. Метою є пошук дефектів та покращення якості продукту. Існує два способи тестування програмного забезпечення, а саме: позитивне тестування та негативне тестування.
Ці два підходи відповідають на протилежні питання: чи працює застосунок, коли все йде добре, і чи залишається він стабільним, коли щось йде не так?
Що таке позитивний тест?
Позитивне тестування – це тип тестування, який виконується над програмним застосунком шляхом надання дійсних наборів даних як вхідних даних. Він перевіряє, чи поводиться програмний застосунок належним чином з позитивними вхідними даними.
Позитивне тестування виконується для того, щоб перевірити, чи програмний застосунок виконує саме те, що від нього очікується. Тому його також називають тестуванням щасливого шляху.
Наприклад, розглянемо числове текстове поле, показане нижче.
У програмі є текстове поле, яке може приймати лише числа. Введення значень до 99999 буде прийнятним для системи, а будь-які інші значення, крім цього, не повинні бути прийнятними. Щоб провести позитивний тест, установіть дійсні вхідні значення від 0 до 99999 і перевірте, чи система приймає ці значення.
Що таке негативний тест?
Негативне тестування – це метод тестування, який виконується над програмним застосунком шляхом надання недійсних або неправильних наборів даних як вхідних даних. Він перевіряє, чи поводиться програмний застосунок належним чином з негативними або небажаними вхідними даними користувача.
Мета негативного тестування полягає в тому, щоб переконатися, що програмний додаток не дає збоїв та залишається стабільним за наявності недійсних вхідних даних. Тому його також називають тестуванням шляху помилок або тестуванням на збої.
Наприклад, розглянемо те саме поле, яке отримує символи замість цифр.
Негативний тест можна провести, ввівши символи від A до Z або від a до z. Або система програмного забезпечення не повинна приймати значення, або вона має видати повідомлення про помилку для цих недійсних введених даних.
В обох типах тестування необхідно враховувати наступне:
- Вхідні дані
- Дія, яку необхідно виконати
- Вихідний результат
Позитивний тест проти негативного тестування: ключові відмінності
Обидва підходи мають однакові тестовий випадок структура. Різниця полягає у вхідних даних, які ви надаєте, та в тому, що доводить результат перевірки.
| Параметр | Позитивне тестування | Негативне тестування |
|---|---|---|
| Також відомий як | Тестування щасливого шляху | Тестування шляху помилок або збоїв |
| Використані вхідні дані | Дійсні, очікувані дані | Недійсні, екстремальні або неочікувані дані |
| Мета | Переконайтеся, що функція виконує свої обов'язки | Підтвердіть, що функція відхиляє те, що не повинна |
| Очікуваний результат | Потік успішно завершено | З'являється явна помилка, і система залишається стабільною |
| Помилка обробки | Не в центрі уваги | Весь фокус |
| Покриття | Вузький, відповідає специфікації | Широкий, досліджує все, що виходить за межі специфікації |
| Типовий ризик, якщо пропустити | Основні функції корабля зламані | Збої та діри в безпеці досягають виробництва |
Невдалий позитивний тест сигналізує про порушену функціональність. Невдалий негативний тест сигналізує про відсутність захисту, ремонт якого набагато дорожчий після того, як користувачі його знайдуть.
Методи тестування, що використовуються для позитивного та негативного тестування
На практиці два класичні методи проектування вхідних даних генерують як позитивні, так і негативні випадки з однієї й тієї ж вимоги:
- Аналіз граничних значень
- Розділення еквівалентності
Аналіз граничних значень
Це один із методів тестування програмного забезпечення, у якому тестові випадки розроблені таким чином, щоб включати значення на межі. Якщо вхідні дані використовуються в межах граничних значень, це вважається позитивним тестуванням. Якщо вхідні дані вибрано поза межами граничних значень, це вважається негативним тестом.
Наприклад, розгляньте прийнятий діапазон, проілюстрований нижче.
Система може приймати числа від 0 до 10 числових значень. Усі інші числа є недійсними значеннями. За цією методикою перевірятимуться граничні значення -1,0,1 і 9,10,11.
Розділення еквівалентності
Це тестування програмного забезпечення техніка, яка розділяє вхідні дані на багато розділів. Значення з кожного розділу необхідно перевірити принаймні один раз. Розділи з дійсними значеннями використовуються для позитивного тестування. У той час як розділи з недійсними значеннями використовуються для негативного тестування.
Наприклад, розгляньте два перегородки, показані нижче.
Числові значення від нуля до десяти можна розділити на два (або три) розділи. У нашому випадку у нас є два розділи від -10 до -1 та від 0 до 10. Вибіркові значення (5 та -5) можна взяти з кожної частини для тестування сценаріїв. Див. розбиття еквівалентності та аналіз граничних значень урок для отримання додаткових прикладів.
Як проводити позитивне та негативне тестування
Наступна послідовність перетворює одну вимогу на збалансований набір позитивних та негативних випадків.
- Прочитайте вимогу щодо обмежень. Зверніть увагу на кожен прийнятний формат, діапазон та обов'язкове поле. Все, що дозволяє специфікація, стає позитивним випадком, а все, що вона виключає, стає негативним.
- Спочатку напишіть позитивний випадок. Надайте достовірні дані, виконайте дію та запишіть очікуваний результат успіху як базовий.
- Виведіть негативні випадки з тих самих границь. Використовуйте аналіз граничних значень та розбиття еквівалентності для створення порожніх полів, неправильних типів даних та чисел поза межами діапазону.
- Додайте ворожі коментарі. Include SQL injection рядки, прострочені токени та неправильно сформовані корисні навантаження API, тому тестування безпеки прогалини з'являються рано.
- Поширити на нефункціональні перевірки. A навантажувальний тест при підтримці кількості користувачів додатне значення, тоді як a стрес-тест за цією межею знаходиться відповідний негативний випадок.
- Виберіть, де відбувається кожен випадок. Уникайте негативних випадків тестування на дим та осудність, які є швидкими позитивними вентилями, та запускають їх у функціональному та регресійне тестування цикли.
Зняття готівки в банкоматі показує парування. У позитивному випадку вводиться правильний PIN-код та дійсна сума, тому йдуть готівка та чек. У негативному випадку вводиться неправильний PIN-код та очікується повідомлення про відмову, а потім блокування картки.
Найкращі практики для підтримки правильного балансу
- Перш ніж розпочати розробку, напишіть щонайменше два випадки для кожної вимоги, один позитивний та один негативний.
- Пріоритетність негативних випадків за впливом, щоб збої в ін'єкціях та платежах були першими, ніж косметичні помилки введення.
- Стверджуйте саме повідомлення про помилку, а не лише те, що дія не вдалася, оскільки розпливчасті повідомлення також є дефектами.
- Залиште місце для дослідницьке тестуваннята реєструйте результати через свій процес управління дефектами.
⚠️ Попередження: Ніколи не запускайте негативні сценарії у реальному робочому середовищі. Вони існують для того, щоб викликати збої, а навмисний збій впливає на реальних користувачів та реальні дані.

.png)
.png)
.png)
.png)