Негативно тестирање у тестирању софтвера је техника која проверава како ваша апликација реагује на неочекивана понашања или неважеће податке. Ова врста тестирања може помоћи тимовима за осигурање квалитета да побољшају робусност и стабилност свог софтвера тако што ће пронаћи изузетке који узрокују замрзавање, падове или друге нежељене исходе.
У овом чланку ћемо истражити шта је негативно тестирање софтвера, зашто је важно и неке од различитих приступа, техника и алата које можете користити за ову технику.
Шта је негативно тестирање софтвера?
Негативно тестирање је техника тестирања софтвера која намерно напаја систем неважећим улазима или неочекиваним подацима да би се видело како поступа са овим сценаријима. Такође познат као тестирање неуспеха или тестирање путање грешке, овај приступ симулира различите сценарије из стварног света са којима ће се ваша апликација сусрести, као што су корисници који уносе неважеће датуме или знакове или користе одређене функционалности на начине које нисте намеравали.
Већина типова тестирања користи валидне податке за тестирање апликације. Међутим, негативно тестирање има другачији приступ тестирањем око ивица и изван типичних улаза и гледањем како апликација обрађује изузетке.
Важно је тестирати да ли ваша апликација ради како је предвиђено. Али, са друге стране, разумевање шта се дешава када корисници одустану од резервације је такође од виталног значаја, посебно ако ове ненамерне употребе узрокују падове, замрзавање или друге недостатке.
Разлика између позитивног и негативног тестирања
тестирање у тестирању софтвера
Као што смо горе навели, негативно тестирање користи неочекиване или неважеће податке за проверу понашања система. Насупрот томе, позитивно тестирање гура очекиване или валидне податке како би се потврдило да систем ради како се очекује.
Другим речима:
- Позитивно тестирање вам помаже да разумете да ли ваша апликација функционише како је планирано
- Негативно тестирање одређује да ли ваша апликација може да поднесе неочекиване догађаје
И позитивно и негативно тестирање у тестирању софтвера је потребно ако желите да ригорозно тестирате своју апликацију.
Зашто је негативно тестирање софтвера од виталног значаја?
Када програмери праве софтвер, они имају јасну представу о томе како очекују да корисник користи софтвер. Међутим, корисници не поштују увек правила. Врло често ће покушати да кликну на дугмад која не постоје, унесу слова у поља са бројевима или покушају уносе које једноставно не очекујете.
Негативно тестирање има за циљ да узме у обзир ове рубне случајеве који се не могу открити позитивним техникама тестирања као што су тестирање јединице , система или интеграције. Потребно је неко неконвенционално размишљање да би се смислиле „закривљене лопте“ које би се бацале на систем. Међутим, коначни резултат је стабилнија и робуснија апликација.
Која је сврха негативног тестирања
у тестирању софтвера?
Негативно тестирање има сличне циљеве као и друге врсте тестирања софтвера. Наиме, за откривање грешака, недостатака и рањивости у апликацији. Међутим, он игра посебну улогу у проналажењу недостатака који се не могу открити коришћењем валидних података. Ево неких разлога за усвајање негативног приступа тестирању.
1. Откривање недостатака
Централна сврха негативног тестирања у тестирању софтвера је да се открију недостаци који су резултат неважећих података или неочекиваних уноса. Омогућава тестерима да заузму проактивнији приступ откривању грешака и осигурају да софтвер испуњава очекивања.
2. Сигурност
Неочекивани уноси или неважећи подаци могу открити безбедносне пропусте. Тестирање и решавање ових ивичних случајева доводи до сигурније и робусније апликације смањењем могућности злонамерних напада, грешака у убризгавању или покушаја неовлашћеног приступа.
3. Руковање грешкама
Негативно тестирање је корисно за валидацију руковања грешкама. Не ради се само о томе да се осигура да систем остане стабилан након што наиђе на неочекиване уносе или податке, већ и о томе како реагује на те догађаје, као што је стварање порука о грешци како би се осигурало да крајњи корисник зна да су подаци неважећи.
4. Побољшање покривености тестом
Позитивно и негативно тестирање у тестирању софтвера су изузетно комплементарни. Оба покривају различите елементе уноса података, што значи да је ваше тестирање свеобухватније.
5. Боље корисничко искуство
Негативно тестирање помаже у откривању извора порука о грешци, отказивања и других неочекиваних понашања која могу негативно утицати на корисничко искуство.
Разлика између позитивног и негативног
тестирање у софтверском инжењерству
Као што смо поменули горе, негативно тестирање шаље неочекиване или неважеће податке да би се проверило понашање система. Позитивно тестирање, с друге стране, шаље очекиване или важеће податке како би се потврдило да систем ради како се очекује.
Разлика између позитивног и негативног тестирања укључује:
1. Циљеви:
Позитивно тестирање потврђује да ли софтвер ради како је предвиђено; негативно тестирање настоји да разуме шта се дешава у нежељеним сценаријима.
2. Подаци:
Позитивно тестирање користи важеће податке, а негативно тестирање користи неважеће уносе, екстремне вредности и неочекиване формате.
3. Фокус:
Позитивно тестирање се фокусира на сценарије успеха, док се негативно тестирање више бави неуспешним сценаријима.
Различите врсте негативних тестова
Негативно тестирање је концепт који покрива неколико различитих приступа валидацији квалитета и интегритета апликације. Ево седам врста негативних тестова које треба да знате.
#1. Испитивање граничних вредности
Тестирање граничних вредности настоји да тестира софтвер са улазима који се налазе на границама или ивицама опсега уноса. Он тестира и максималне и минималне очекиване вредности, али такође тестира само изван ових улаза.
Пример: Поље за унос прихвата бројеве између 1-9. Тест граничне вредности ће унети и 1 и 9, али и тест 0 и 10.
#2. Тестирање улазне вредности
Тестирање улазне вредности одређује како ће систем реаговати на неочекиване или неважеће уносе. Неки од улаза које ће тестирати укључују:
- Нетачни типови података
- Вредности ван опсега
- Специјалних знакова
- Празна поља.
Пример: поље за унос захтева само број, тако да ће тест унети слово и видети како систем реагује.
#3. Тестирање оптерећења
Тестирање оптерећења помаже тестерима да процене како ће систем реаговати под великим стресом или оптерећењима, као што су велики скупови података или велики обим саобраћаја. Алати за аутоматизацију тестирања могу симулирати ове екстремне услове да би разумели како систем реагује под принудом.
Пример: Тестер ће симулирати хиљаде корисника који истовремено приступају веб локацији.
#4. Тестирање изузетака
Ова врста тестирања истражује како ће систем реаговати на изузетне догађаје или грешке. Неки од тестова укључују
- Симулација пада система
- Мрежни кварови
- Грешке у бази података
- Проблеми са простором на диску
- Фајлови који недостају.
Пример: Тест може да истражи шта се дешава када корисник преузима датотеку из апликације, а интернет је прекинут.
#5. Безбедносно тестирање
Безбедносно тестирање користи приступ негативног тестирања да би се истакле и разумеле рањивости у софтверу које могу бити откривене неважећим или неочекиваним уносима. Овај приступ тестира уобичајене нападе, као што су:
- СКЛ ињекција
- Скриптовање на више локација (КССС)
- Буффер оверфловс.
Пример: Безбедносни тест може да покуша да убаци злонамерни код у поље за унос корисника.
#6. Тестирање корисничког интерфејса
Ова врста тестирања се фокусира на грешке које се јављају када корисник комуницира са софтвером. Неке од ствари које ће покушати да утврди укључују:
- Неочекивани одговори на интеракције корисника
- Нетачне поруке о грешци
- Проблеми са навигацијом
Пример: Тест ће истражити шта се дешава када се одређене радње изводе ван редоследа.
#7. Тестирање интегритета података
Тестирање интегритета података осигурава да подаци остану тачни и доследни у различитим операцијама унутар апликације. Неке од ствари које се тестирају укључују:
- Потенцијална оштећења података
- Сценарији губитка података
- Ненамерне измене података
Пример: Тест ће потврдити да подаци остају исти након преноса.
Као што видите, постоји много различитих приступа негативном тестирању. Оно што им је заједничко је коришћење неочекиваних уноса или неважећих података да би се видело како апликација функционише у нетипичним условима.
Предности негативног тестирања
Негативно тестирање се односи на разумевање како ваша апликација функционише када се појаве неочекиване ситуације. Ево неких од главних предности коришћења овог приступа.
- Помаже вам да разумете утицај који ће неочекивани уноси или неважећи подаци имати на вашу апликацију. Хоће ли се срушити? Пљунути нетачну поруку о грешци?
- Негативно тестирање је део одговорног приступа обезбеђивању квалитета јер настоји да идентификује слабости у систему
- Негативно тестирање ставља софтвер у корак тако што тестира његов одговор на непредвиђене или неочекиване сценарије са којима ће се сусрести у дивљини
- Опет, негативно тестирање је суштинска компонента темељног приступа безбедности јер наглашава потенцијалне векторе напада које би сајбер нападачи могли да искористе.
Недостаци негативног тестирања
Негативно тестирање нуди обиље предности, али има и неке недостатке које се такође морају превазићи.
- Темељно негативно тестирање може захтевати додатни хардвер и софтвер, што може повећати трошкове тестирања. За тимове који раде са малим буџетом, ово може бити неповољно.
- Негативно тестирање може бити прилично дуготрајно јер захтева креирање многих тест случајева да би се покриле различите пермутације инпута са којима ће се софтвер суочити у производњи
- Постоје ограничења у броју непредвидивих ситуација које можете покрити негативним тестирањем. Заиста, неке ситуације могу бити толико неочекиване да тестери не могу да их размотре.
- Аутоматизација случајева негативних тестова је изазовна. Међутим, са правим софтвером, као што је ЗАПТЕСТ, процес је далеко лакши за управљање.
Изазови негативног тестирања
Негативно тестирање је кључно ако желите да направите робустан и поуздан софтвер способан да издржи напрезања и напрезања интеракције корисника. Међутим, постоје неки изазови у примени приступа којих морате бити свесни.
Хајде да разложимо неке од упорнијих изазова.
1. Идентификовање негативних сценарија у тестирању софтвера
Довољна покривеност:
Један од највећих изазова у негативном тестирању је осигурати да покријете довољно неочекиваних сценарија. Постоји много негативних сценарија и пермутација, тако да њихово разматрање захтева креативан приступ замишљању начина на који ће ваши корисници комуницирати са софтвером.
Одређивање приоритета:
Са толико потенцијалних негативних сценарија које треба ставити под микроскоп, тестери нису увек сигурни одакле треба да почну. Неки солидни критеријуми за процену томе шта треба дати приоритет укључују предвиђање:
- Ситуације са великом вероватноћом кварова
- Озбиљност исхода дефеката.
2. Дизајнирање адекватних негативних тест случајева
Провера уноса:
Дизајнирање солидних негативних тест случајева захтева прилично свеобухватно разумевање понашања, архитектуре и ограничења вашег система. Тестирање софтвера захтева коришћење пажљиво размотрених улаза и података. Иако вам насумични приступ може помоћи да откријете неке недостатке, он бледи у поређењу са прецизнијим и систематичнијим приступом негативном тестирању.
Разноврсност података:
У зависности од специфичности вашег система, можда ћете морати да тестирате прилично разнолик скуп података. Заиста, постоји много различитих формата података, као што су бројеви, текст, датуми и тако даље, а сваки од њих може да прихвати ваша апликација. Изазов овде укључује дизајнирање тест случајева који могу узети у обзир сваки формат и, посебно, сваку варијацију неважећих података. Ова ситуација може бити прилично дуготрајна за тимове за тестирање.
3. Ефикасност и аутоматизација тестирања
Дуготрајан:
Позитивно тестирање има за циљ да потврди софтвер у односу на очекиване резултате. Негативно тестирање, с друге стране, мора да се удуби у неочекивано и истражи потенцијалне сценарије. Прелазак преко неистражене територије захтева више времена. Као резултат тога, ако желите свеобухватне резултате који долазе са негативним тестирањем, морате бити спремни да уложите неколико додатних сати.
Сложеност аутоматизације:
Негативно тестирање може захтевати много времена и ресурса. Као такав, то је савршен посао за аутоматизацију софтверског тестирања. Међутим, постоје неке сложености које се морају превазићи. На пример, дизајнирање тест случајева који дефинишу очекиване исходе за неочекиване инпуте захтева одређено искуство и знање. Поред тога, ваш постојећи оквир за аутоматске тестове можда неће подржавати неважеће податке које желите да гурнете у своју апликацију, додајући додатни слој сложености.
4. Вредновање резултата
Лажно позитиван:
Калибрација вашег тестирања како би се осигурала задовољавајућа равнотежа између тачности и свеобухватности је познато питање за негативне тестере. У неким ситуацијама, преосетљиво руковање грешкама ће лажно збунити важеће улазе за негативне улазе, што ће довести до губљења времена на проблеме који нису релевантни.
Двосмислени резултати:
Када систем прими неважећи унос, то може довести до пада, грешака или замрзавања. У многим случајевима, ово је сигуран знак грешке. Међутим, у другима, то је доказ необрађеног рубног случаја који програмери нису узели у обзир. Разликовање између ових дискретних ситуација је важно, али истраживање правог узрока одузима много времена.
Управљање подацима:
Негативно тестирање захтева знатну количину података. Ове информације о тестирању морају се и генерисати и одржавати. У развојним сценаријима са кратким временским оквирима, ово је додатни посао који се мора узети у обзир.
5. Организациона питања
Недостатак стручности за негативно тестирање:
Иако је негативно тестирање популарно, многим испитивачима недостају вештине и стручност да спроведу ову врсту тестирања на свеобухватан начин. Дизајнирање одређених негативних тест случајева је мање интуитивно од њиховог еквивалента позитивног тест случаја. Штавише, имплементација аутоматизације тестирања такође може бити изазовна без одговарајуће стручности.
Пословни притисак:
Заинтересоване стране, тестери и менаџмент морају разумети критичну улогу коју негативно тестирање игра у развоју робусних апликација. Неуважавање његове важности може довести до притиска да се фокусира на позитивно тестирање по цену негативног тестирања.
Јасно је да постоји неколико изазова са којима се суочавају тимови који желе да откључају предности негативног тестирања. Међутим, са правим приступом и правим алатима за тестирање софтвера, можете превазићи ове проблеме и направити софтвер који превазилази очекивања корисника.
Како написати негативне тестне случајеве који тестирају софтвер
Писање софтвера за тестирање негативних тест случајева захтева одређено искуство и креативно размишљање. Ево водича корак по корак који ће вам помоћи да направите ове критичне тестне случајеве.
#1. Одредите своје циљеве
Пре него што напишете свој софтвер који тестира негативне тестове, морате да разумете зашто желите да извршите негативно тестирање. Немају све апликације користи од негативног тестирања.
Дакле, схватите шта желите да постигнете. Негативно тестирање је дизајнирано да открије грешке и падове који су резултат неочекиваних сценарија или услова интеракције корисника.
#2. Наведите потенцијалне негативне сценарије
Следеће, морате да направите рачун о врсти негативних сценарија који се могу појавити када корисници ступе у интеракцију са вашим софтвером. Истраживање током овог корака је кључно. Неке области које бисте требали истражити су:
- Системски захтеви
- Типични случајеви употребе
- Карактеристике и функције апликације
Проучите ове ситуације и направите листу сценарија у којима апликација можда неће функционисати како сте намеравали.
Затим размотрите сценарије валидације критичног уноса. Обично ово укључује обрасце за унос података, поља за пријаву и тако даље.
Коначно, узмите у обзир мноштво неконвенционалних начина на које корисници могу да ступе у интеракцију са вашим софтвером и неочекиване догађаје који могу да доведу до негативних исхода, као што су искључења мреже, нагло гашење система, масивни пренос података итд.
Када документујете што је могуће више сценарија, време је да одредите очекиване исходе ових неочекиваних сценарија.
#3. Наведите очекиване резултате
Сваки тест случај мора имати очекивани исход, а негативан тест случај се не разликује. Најбоља пракса овде је да напишете сваки негативан сценарио и одредите какав би исход требало да буде.
Неки од потенцијалних исхода могу укључивати:
- Тачне и информативне поруке о грешкама
- Одговарајућа преусмерења
- Грациозно руковање системом, на пример, спречавање замрзавања или пада система.
#4. Изаберите улазе за тестирање
Сада је време да видите које улазе треба да тестирате. Ови улази би требало да буду они који ће највероватније изазвати грешку или друга негативна понашања.
Неки улази које треба да укључите су:
- Вредности ван опсега (негативне вредности у пољу за узраст, итд.)
- Неважећи подаци (слова у нумеричком пољу, итд.)
- Неочекивани знакови или симболи
- Специјалних знакова
- Недостаје Подаци
#5. Напишите своје тестне случајеве
Када сакупите све своје сценарије, време је да напишете своје тестне случајеве. Сада, са негативним тестирањем, постоји скоро неограничен број тест случајева које можете написати. На крају крајева, ова врста тестирања се односи на проналажење шта се дешава када људи користе софтвер на начине које нисте намеравали. Међутим, рокови налажу да смањите листу потенцијалних случајева на ситуације које ће највероватније изазвати проблеме.
Као и увек, напишите своје тестне случајеве јасним, сажетим и објективним језиком. Овде нема места двосмислености.
Ево доброг формата за ваше негативне тестове.
- Користите ИД тест случаја
- Опишите прецизно шта се тестира
- Имајте на уму све предуслове за ваш негативан тест
- Наведите скуп укључених корака
- Успоставите јасне и објективне резултате
- Забележите стварни резултат вашег теста
#6. Закажите тест
Сада морате да закажете своје тестове. Опет, важно је дати приоритет сценаријима који имају најтеже штетне исходе, као што су падови, или где ће проблеми највероватније бити откривени.
Пример негативног теста
Ево примера негативног теста.
ИД тест случаја: ТЦ001
Опис: Проверите да ли се приказује порука о грешци ако корисник унесе неважећу адресу е-поште
Предуслови: Корисник мора бити на страници за пријаву на апликацију
Кораци: 1. Унесите неважећу адресу е-поште. 2. Притисните „Пријава“
Очекивани исход: Када корисник притисне „Пријава“, појављује се порука о грешци која каже „унета је нетачна адреса е-поште“.
Исход: Забележите шта се догодило када је изабрано „Пријава“.
Примери негативних сценарија у тестирању софтвера
Ево неких типичних сценарија које можете да проверите коришћењем негативних метода тестирања.
1. Подаци и типови поља
Ако сте попунили образац на мрежи, знаћете да су ова поља подешена да прихватају одређене врсте података. Неки су само бројеви, док други прихватају датуме, текст или друге врсте података.
Негативно тестирање ових поља укључује слање неважећих података, на пример, уношење слова у нумеричко поље.
2. Обавезна поља
Опет, обавезна поља су уобичајене карактеристике образаца и апликација. Они су згодан алат за обезбеђивање прикупљања свих критичних информација пре него што корисник пређе на следећу фазу.
Добар тест случај за ове сценарије укључује гледање шта се дешава када ова поља остану празна. У идеалном сценарију, требало би да се покрене порука о грешци која позива корисника да попуни потребно поље.
3. Одговарајући број знакова
Ако имате апликацију веб страница које се тестирају, можда имате поље података које захтева ограничен број знакова. Ово може бити за корисничка имена, бројеве телефона, регистрационе бројеве и тако даље.
Можете креирати негативне тестне случајеве за ова поља писањем тестова који уносе преко максимално дозвољених знакова да бисте видели како апликација реагује.
4. Границе и ограничења података
Одређени обрасци ће имати поља са фиксним ограничењима. На пример, ако желите да неко оцени нешто од 100, границе података би биле 1-100.
Направите негативан тест случај где покушавате да унесете 0, 101 или друге негативне или позитивне вредности од 1-100.
Најбоље праксе за негативно тестирање
Постоји неколико најбољих пракси које осигуравају висококвалитетно негативно тестирање. Ево неколико савета који ће вам помоћи да стигнете тамо.
1. Дефинишите своје неважеће уносе:
Прелијте развојну документацију, случајеве коришћења и УИ/УКС да бисте разумели и идентификовали потенцијалне неважеће уносе. Пазите на неважеће типове података, екстремне вредности, податке који недостају, празна поља, неочекиване формате и још много тога.
2. Користите анализу граничних вредности:
Као што је горе поменуто, оцртајте своје граничне вредности да бисте пронашли ивичне случајеве који могу изазвати неочекиване реакције.
3. Партиционисање еквиваленције запослених:
Погледајте своје улазне домене и поделите их на еквивалентне партиције са важећим и неважећим вредностима. Овај процес помаже да се смањи број тест случајева које ћете морати да напишете јер ако еквивалентан део неважећих података изазове проблеме за један улаз, вероватно ће бити представљен у целој класи.
4. Имитирајте лоше кориснике:
Позитивно тестирање потврђује очекивано понашање корисника. Негативно тестирање истражује шта се дешава када људи злоупотребљавају вашу апликацију. Дакле, размислите о различитим сценаријима у којима се то може догодити и поновите их у својим тест случајевима.
5. Нека ризик и утицај воде ваше тестирање:
Ниједан тестер нема неограничено време. У неком тренутку, мораћете да донесете тешке одлуке јер не можете да тестирате (или чак знате) сваки неочекивани исход. Када треба да одлучите које врсте негативних тестова да покренете, дајте приоритет областима које ће донети највећи ризик или негативан утицај на ваш производ.
6. Грешка при руковању верификацијом:
Уверите се да руковање грешкама буде део вашег тестирања, проверавајући да ли су поруке о грешци корисне и тачне.
7. Аутоматизујте што је више могуће:
Аутоматизација је вешта у руковању свакодневним задацима који се понављају. Међутим, негативно тестирање и даље захтева ручни приступ за истраживачко тестирање и проналажење крајњих случајева.
Најбољи алати за негативно тестирање за 2024
Иако је негативно тестирање софтвера уобичајено у индустрији, постоји недостатак посебних алата за тај посао. Велики разлог за то је разноврсна природа негативног тестирања. Штавише, многи од истих алата који се користе за позитивно тестирање раде на негативном тестирању када прилагодите улазне податке.
ЗАПТЕСТ је најбољи алат за негативно тестирање због своје свестране и модуларне природе. Једноставан је за употребу и прилагодљив, а захваљујући могућностима за више платформи и апликација, нуди флексибилност коју је тешко надмашити.
Тестирање засновано на подацима и тестирање мутација функционалност чини ЗАПТЕСТ савршеним за негативно тестирање. Штавише, захваљујући свом РПА функције, можете са лакоћом симулирати кориснике из стварног света, поново користити тестове и правити извештаје и документацију. Укратко, ЗАПТЕСТ-ова способност да покрене најсавременију софтверску аутоматизацију и роботски софтвер за аутоматизацију процеса чини га на једном месту за све задатке аутоматизације, укључујући негативно тестирање.
Последње мисли
Негативно тестирање у тестирању софтвера помаже тимовима да разумеју како ће њихова апликација поступати са неочекиваним уносима и неважећим подацима. Док позитивно тестирање тестира да ли ваш софтвер функционише како је предвиђено, негативно тестирање софтвера вам помаже да схватите шта се дешава када корисници погрешно изаберу улазе и податке. Оба приступа су важна ако желите чврсту и робусну апликацију која може да се носи са стресовима и напорима различитих интеракција корисника.