Що таке негативний тест? Тестові випадки з прикладом

⚡ Розумний підсумок

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

  • ???? Мета: Переконайтеся, що програма повністю відхиляє недійсні дані, а не призводить до збоїв або аварійного завершення роботи.
  • 🇧🇷 Контраст: Позитивний результат тестування доводить щасливий шлях; негативний результат тестування досліджує все, що знаходиться поза ним.
  • 🛗 Аналогія: Ліфт повинен витримувати перевантаження, пожежу та втрату електроенергії, а не лише звичайні пасажирські поїздки.
  • 🔒 Безпека: Недійсні завантаження та спроби SQL-ін'єкцій – це класичні сценарії негативного тестування.
  • 🧪 Дизайн: Граничні значення, класи еквівалентності, вгадування помилок та фаззинг генерують випадки.
  • 📊 Пріоритет: Розташуйте недійсні вхідні дані за впливом, оскільки вичерпне негативне висвітлення є недоступним.
  • ⚠️ Компроміс: Надмірне негативне тестування витрачає бюджет, і покриття позитивних результатів може потребувати більше.

Негативне тестування в тестуванні програмного забезпечення з недійсними прикладами вхідних даних

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

Негативне тестування – це тип тестування програмного забезпечення, який використовується для перевірки програмного застосунку на наявність неочікуваних вхідних даних та умов. Неочікувані дані або умови варіюються від неправильного типу даних у простому полі форми до навмисної хакерської атаки. Мета негативного тестування – запобігти збою застосунку через недійсні вхідні дані та покращити якість і стабільність продукту.

Позитивне тестування лише доводить, що система працює за нормальних умов. Негативне тестування підтверджує, що та сама система також справляється з аномальними умовами, що саме і вимагається відмовостійким продуктом.

Приклад негативного тесту

Ліфт – це приклад, який найчастіше використовується для пояснення негативного тестування, оскільки його нормальну поведінку та поведінку при відмові легко уявити.

Вимоги до ліфта знайомі: натискання номера поверху відправляє ліфт на цей поверх, а двері автоматично відчиняються, як тільки ліфт досягає зазначеного поверху.

Деякі негативні сценарії для того самого підйому наведено нижче, поряд із припущенням, яке натомість робить позитивне тестування.

Негативне тестування Позитивне тестування
Що станеться, якщо кількість осіб (вага) перевищить вказану межу? Припускається, що в ліфт увійде лише зазначена кількість осіб
Що станеться, якщо хтось закурить або спричинить пожежу всередині ліфта? Припускається, що всередині ліфта не буде диму чи вогню
Що станеться, якщо під час роботи зникне живлення? Припускається, що під час роботи ліфта не буде відключення електроенергії

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

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

Програмне забезпечення поводиться так само. Негативний тест навмисно відхиляється від звичайної операційної процедури. Розглянемо реєстраційну форму.

Негативне тестування Позитивне тестування
Введіть недійсний ідентифікатор електронної пошти в поле електронної пошти У поле електронної пошти вводяться лише дійсні ідентифікатори електронної пошти
Введіть недійсний номер телефону, наприклад, символи, у поле номера телефону У числове поле вводяться лише цифри
Завантажте зображення, розмір якого виходить за межі заданої межі Завантажуються лише зображення в межах заданого розміру
Завантажте недійсні файли, такі як XML or SQL файли в полі завантаження зображень Завантажуються лише зображення у дійсних форматах, таких як .jpg або .png

Кожен із цих негативних випадків все одно має забезпечити працездатність системи. Якщо символ введено в числове поле, програма не може обробити неочікувані дані, яких вона ніколи не очікувала, і може призвести до збою. Що ще гірше, SQL injection Рядок у тому ж полі може стерти вміст бази даних. Втрати такого роду є причиною негативного тестування.

Навіщо робити негативний тест?

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

Організаційна перспектива

Надання клієнту якісного продукту є відповідальністю організації, а негативні результати тестування є частиною цього зобов'язання. Це також є доказом того, що організація зробила все можливе, щоб запобігти збою, навіть якщо жодна система не є повністю безпомилковою.

Вплив є вирішальним фактором. Сайт електронної комерції може пройти всі позитивні тести та все одно містити лазівку, яка дозволяє зловмиснику виконати SQL-ін'єкцію та стерти дані, що стоять за нею. Це серйозне порушення безпеки, і лише негативне тестування шукає його.

Загальнодоступні програми, зокрема вебсайти, майже не надають жодного контролю над тим, як відвідувачі їх використовують, тому негативне тестування — єдиний спосіб підтвердити, що незвичне використання викрито та стримано. Те саме стосується зловмисних користувачів: зловмисники активно шукають можливості зламати систему, а сценарії злому однозначно належать до негативного тестування.

Клієнтська перспектива

Клієнти очікують продукту з нульовою вразливістю, і негативне тестування підтверджує це очікування. Для чутливих продуктів, таких як електронна комерція або онлайн-торгівля акціями, тестування безпеки і негативні тести є обов'язковими, а не необов'язковими.

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

Як зробити негативний тест

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

Список можливих недійсних вхідних даних фактично нескінченний, тому негативним тестовим випадкам необхідно надавати пріоритет. Для поля зображення, яке приймає лише файли .png, кандидати для завантаження включають .jpeg, .xml, .xls та багато інших. Файл XML або SQL має набагато більший потенційний вплив, ніж .jpeg, тому ці випадки виконуються першими. Ранжування випадків за впливом перед виконанням робить негативне тестування доступним.

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

  • Граничні значення: використовувати значення безпосередньо за межами допустимого діапазону, наприклад, 0 та 101 для поля, яке приймає значення від 1 до 100.
  • Недійсні класи еквівалентності: вибрати одного представника з кожного класу відхилених вхідних даних, наприклад, літери в числовому полі.
  • Помилка вгадування: використовуйте досвід минулих дефектів, щоб зосередитися на входах, які найімовірніше порушать роботу цієї функції.
  • Спотворені та ворожі дані: теги скриптів, фрагменти SQL та надмірно великі корисні навантаження, що перевіряють перевірку та обробку даних безпеки.
  • Fuzz тестування: автоматично генерувати великі обсяги випадкових або мутованих вхідних даних для пошуку необроблених збоїв.
  • Перервані потоки: скасувати, оновити, перевищити час очікування або втратити з’єднання під час транзакції.

Яким би методом не виникав випадок, очікуваний результат має бути записаний як контрольований, читабельний збій — повідомлення про перевірку, відхилення завантаження, чистий відкат — і ніколи не просто як «система не дає збою».

Плюси та мінуси негативного тестування

Як і будь-який інший метод тестування, негативне тестування має переваги та недоліки, які залежать від того, де, коли та в якій кількості його застосовують.

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

  • Це безпосередньо захищає якість продукту, оскільки якісний продукт – це продукт, у якого немає вразливостей, які можна експлуатувати.
  • Це розширює охоплення. Недійсні вхідні дані потрапляють до активної системи навмисно чи випадково, тому негативні випадки повинні існувати разом із позитивними, щоб охоплення було змістовним.
  • Це підвищує довіру клієнтів ще до публікації релізу.
  • Він виявляє дефекти, які позитивне тестування структурно не може охопити, такі як необроблені винятки та слабка перевірка вхідних даних.

Недоліки негативного тестування

  • У деяких ситуаціях це марна трата часу та енергії. Якщо застосунок створено для одного користувача, випадок зі 100 одночасними користувачами не вартий тестування, тому вибір правильних умов має значення, і деяким системам взагалі потрібно дуже мало негативного тестування.
  • Для проектування корпусів потрібні кваліфіковані та досвідчені люди.
  • З точки зору клієнта, це збільшує витрати та може затримати випуск.
  • Це конкурує за зусилля. Команда, яка витрачає багато коштів на негативне тестування, може зрештою недостатньо інвестувати в позитивне тестування.

Поширені запитання

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

Порожні облікові дані, дійсний користувач з неправильним паролем, фрагменти SQL в імені користувача, занадто довгі рядки, початкові або кінцеві пробіли, вимкнені облікові записи та повторювані невдалі спроби підтвердження роботи блокування.

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

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

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

Так. Випадки недійсного введення дуже часто повторюються, тому вони підходять тестування автоматизації та регресійні набори. Інструменти фаззингу автоматизують генерацію випадкових вхідних даних, тоді як твердження перевіряють наявність повідомлень перевірки.

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

Так, він створює код тверджень, фікстури недійсних даних та параметризовані випадки з існуючого тестового файлу. Згенеровані очікування потребують перегляду, оскільки твердження, яке виглядає правдоподібним, може кодувати неправильну поведінку.

Підсумуйте цей пост за допомогою: