Какво е отрицателен тест? Тестови случаи с пример

⚡ Умно обобщение

Негативното тестване проверява как се държи софтуерното приложение, когато получава неочаквани входни данни или работни условия, така че продуктът да се деградира грациозно, вместо да се срива, да поврежда данни или да разкрива дупка в сигурността.

  • ???? Основание: Уверете се, че приложението отхвърля невалидни данни безпроблемно, вместо да се проваля или срива.
  • Контраст: Положителните тестове доказват щастливия път; отрицателните тестове изследват всичко извън него.
  • 🛗 Аналогия: Асансьорът трябва да издържи на претоварване, пожар и загуба на захранване, не само на нормални пътувания на пътници.
  • 🔒 Сигурност: Невалидните качвания и опитите за SQL инжектиране са класически сценарии за отрицателни тестове.
  • 🧪 Дизайн: Граничните стойности, класовете на еквивалентност, отгатването на грешки и размиването генерират случаите.
  • 📊 Приоритет: Класирайте невалидните входни данни по въздействие, тъй като изчерпателното негативно отразяване е недостъпно.
  • ⚠️ Компромис: Прекомерното количество отрицателни тестове изразходва бюджет, който може да се нуждае от повече средства за покритие на положителни тестове.

Отрицателно тестване при софтуерно тестване с невалидни примери за вход

Отрицателен тест

Отрицателен тест е вид софтуерно тестване, използвано за проверка на софтуерно приложение срещу неочаквани входни данни и условия. Неочакваните данни или условия варират от грешен тип данни в просто поле на формуляр до умишлена хакерска атака. Целта на отрицателното тестване е да се предотврати срив на приложението при невалиден вход и да се подобри качеството и стабилността на продукта.

Само положителното тестване доказва, че системата работи при нормални условия. Отрицателното тестване потвърждава, че същата система се справя и с анормални условия, което е необходимо за един отказоустойчив продукт.

Пример за отрицателен тест

Асансьорът е примерът, който най-често се използва за обяснение на отрицателно тестване, защото както нормалното му поведение, така и поведението му при повреда са лесни за представяне.

Изискванията за асансьор са познати: натискането на номер на етаж изпраща асансьора до този етаж и вратата се отваря автоматично, след като асансьорът достигне посочения етаж.

Някои отрицателни сценарии за същото повишаване са изброени по-долу, до предположението, което прави положителното тестване.

Отрицателен тест Положителен тест
Какво се случва, ако броят на лицата (теглото) надвиши определения лимит? Предполага се, че само определеният брой хора ще влязат в асансьора
Какво се случва, ако някой пуши или предизвика пожар вътре в асансьора? Предполага се, че няма да има дим или огън вътре в асансьора
Какво се случва, ако има прекъсване на захранването по време на работа? Предполага се, че няма да има прекъсване на електрозахранването, докато асансьорът работи

Всички тези случаи попадат под отрицателни тестове. Не може да се гарантира, че нито един от тях никога няма да се случи, така че всеки един трябва да бъде овладян.

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

Софтуерът се държи по същия начин. Отрицателният тест умишлено се отклонява от нормалната оперативна процедура. Да разгледаме регистрационен формуляр.

Отрицателен тест Положителен тест
Въведете невалиден имейл адрес в полето за имейл В полето за имейл се въвеждат само валидни имейл адреси
Въведете невалиден телефонен номер, например символи, в поле за телефонен номер В полето за число се въвеждат само числа
Качете изображение с размер извън зададената граница Качват се само изображения в рамките на посочения размер
Качвайте невалидни файлове, като например XML or SQL файлове в поле за качване на изображения Качват се само валидни графични формати, като например .jpg или .png

Всеки един от тези отрицателни случаи все пак трябва да накара системата да работи. Ако в числово поле бъде въведен символ, приложението не може да обработи неочакваните данни, които никога не е очаквало, и може да се срине. Още по-лошо, SQL инжекция Низ в същото поле може да изтрие съдържанието на базата данни. Загуби от този вид са причината за съществуването на отрицателни тестове.

Защо се прави отрицателен тест?

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

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

Предоставянето на качествен продукт на клиента е отговорност на организацията, а отрицателните тестове са част от това задължение. Това е и доказателство за организацията, че е направила всичко разумно, за да предотврати повреда, въпреки че никоя система не е напълно без грешки.

Въздействието е решаващият фактор. Сайт за електронна търговия може да премине всеки положителен тест и все пак да съдържа вратичка, която позволява на атакуващ да извърши SQL инжекция и да изтрие данните зад нея. Това е сериозен пробив в сигурността и само отрицателното тестване го търси.

Публично достъпните приложения, по-специално уебсайтовете, почти не предлагат контрол върху това как посетителите ги използват, така че отрицателното тестване е единственият начин да се потвърди, че необичайната употреба е покрита и ограничена. Същото важи и за злонамерените потребители: нападателите активно търсят възможност да пробият система, а хакерските сценарии принадлежат категорично към покритието с отрицателно тестване.

Клиентска гледна точка

Клиентите очакват продукт с нулеви уязвимости, а отрицателните тестове са това, което подкрепя това очакване. За чувствителни продукти като електронна търговия или онлайн търговия с акции, тестване на сигурността и отрицателните тестове са задължителни, а не незадължителни.

Единствената реална грижа на клиента е цената. След като въздействието на дадена грешка бъде анализирано, клиентът е в позиция да реши докъде трябва да стигнат усилията за отрицателно тестване.

Как да се направи отрицателен тест

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

Списъкът с възможни невалидни входни данни е практически безкраен, така че отрицателните тестови случаи трябва да бъдат приоритизирани. За поле за изображение, което приема само .png файлове, качваните кандидати включват .jpeg, .xml, .xls и много други. XML или SQL файл има много по-голямо потенциално въздействие от .jpeg, така че тези случаи се изпълняват първо. Класирането на случаите по въздействие преди изпълнение е това, което прави отрицателното тестване достъпно.

Повечето отрицателни тестови случаи идват от малък набор от установени техники за проектиране, а не от импровизация:

  • Гранични стойности: упражнявайте стойностите непосредствено извън валиден диапазон, като например 0 и 101 за поле, което приема от 1 до 100.
  • Невалидни класове на еквивалентност: изберете по един представител от всеки клас отхвърлен вход, например букви в числово поле.
  • Грешка при предположение: използвайте опита от минали дефекти, за да се насочите към входните данни, които е най-вероятно да нарушат този вид функция.
  • Деформирани и враждебни данни: тагове на скриптове, SQL фрагменти и прекалено големи полезни товари, които проверяват валидацията и обработката на сигурността.
  • Тестване на размита информация: генерират автоматично големи обеми от произволни или мутирали входни данни, за да открият необработени сривове.
  • Прекъснати потоци: анулиране, обновяване, изтичане на времето или загуба на връзка по време на транзакция.

Независимо от техниката, която води до случая, очакваният резултат трябва да бъде записан като контролиран, четлив неуспех – съобщение за валидиране, отхвърлено качване, чисто връщане назад – и никога просто като „системата не се срива“.

Плюсове и минуси на отрицателното тестване

Както всяка друга техника за тестване, отрицателното тестване има предимства и недостатъци, които зависят от това къде, кога и в каква степен се прилага.

Предимства на отрицателния тест

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

Недостатъци на отрицателния тест

  • В някои ситуации това е загуба на време и енергия. Ако приложението е създадено за един потребител, случаят със 100 едновременни потребители не си струва да се тества, така че изборът на правилните условия е от значение и някои системи се нуждаят от много малко отрицателни тестове.
  • Изискват се квалифицирани и опитни хора, които да проектират кутиите.
  • От гледна точка на клиента, това добавя разходи и може да забави издаването.
  • Конкурира се за усилия. Екип, който харчи много за отрицателни тестове, може да се окаже, че не инвестира достатъчно в положителни тестове.

Въпроси и Отговори

Положителното тестване предоставя валидни данни и потвърждава очаквания резултат. Отрицателното тестване предоставя невалидни данни, грешни формати и повредени последователности и потвърждава, че приложението ги отхвърля с контролирано съобщение, вместо да се окаже неуспешно.

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

Не. Те се припокриват, когато става въпрос за невалиден или враждебен вход, но тестването за сигурност обхваща също удостоверяване, оторизация, криптиране и обработка на сесии. Отрицателното тестване е по-широка техника за вход и условие.

Тестерите и QA инженерите обикновено ги пишат, често с разработчик, който преглежда пътищата за грешки, и бизнес анализатор, който потвърждава кои невалидни условия всъщност забраняват изискванията.

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

Да. Случаите с невалиден вход са много повтарящи се, така че са подходящи тестване за автоматизация и регресионни пакети. Инструментите за размиване автоматизират генерирането на произволни входни данни, докато твърденията проверяват дали се появяват съобщения за валидиране.

Моделите четат изисквания или схема на формуляр и предлагат невалидни стойности, гранични условия и враждебни низове, които тестерът може да не изброи ръчно. Проверяващият все пак потвърждава, че всеки очакван резултат съответства на спецификацията.

Да, той изготвя код за твърдения, настройки за невалидни данни и параметризирани случаи от съществуващ тестов файл. Генерираните очаквания се нуждаят от преглед, защото едно правдоподобно изглеждащо твърдение може да кодира грешно поведение.

Обобщете тази публикация с: