complete functional testing guide with its types
Детаљни свеобухватни водич за функционално испитивање са типовима, техникама и примерима:
Шта је функционално тестирање?
Функционално тестирање је врста тестирања црне кутије које се изводи да би се потврдило да се функционалност апликације или система понаша онако како се очекује.
То се ради да би се верификовала сва функционалност апликације.
ЛИСТА Водича обрађених у овој серији:
Туториал # 1: Шта је функционално тестирање (овај водич)
Туториал # 2: Питања за испитивање функционалности
Туториал # 3: Врхунски функционални алати за тестирање аутоматизације
Туториал # 4: Шта је нефункционално тестирање?
Водич бр. 5: Разлика између јединице, функционалне и Интеграција Тестирање
Лекција # 6 : Зашто би функционисање и испитивање перформанси требало радити истовремено
Алати:
Туториал # 7: Функционална аутоматизација испитивања са Ранорек Студио-ом
Туториал # 8: УФТ функционални алат Нове функције
Туториал # 9: Вишеструка функционална аутоматизација прегледача помоћу алата Паррот КА
Водич бр. 10: Водич за алат за отворени извор Јубула за тестирање функционалности
Шта ћете научити:
- Увод у функционално испитивање
Увод у функционално испитивање
Мора постојати нешто што дефинише шта је прихватљиво понашање, а шта не.
Ово је наведено у спецификацији функције или захтева. То је документ који описује шта је кориснику дозвољено да то учини, да би могао да утврди усклађеност апликације или система са њом. Поред тога, понекад би то могло довести и до стварних сценарија са пословне стране који треба да буду потврђени.
Стога се тестирање функционалности може извршити путем две популарне технике :
- Тестирање на основу захтева: Садржи све функционалне спецификације које чине основу за сва испитивања која треба спровести.
- Тестирање засновано на пословним сценаријима: Садржи информације о томе како ће систем бити схваћен из перспективе пословног процеса.
Тестирање и осигурање квалитета су огроман део СДЛЦ процеса. Као тестер, морамо да будемо свесни свих врста тестирања, чак и ако нисмо директно у вези са њима свакодневно.
Како је тестирање океан, његов обим је заиста тако огроман, а ми смо посветили тестере који то раде различите врсте испитивања . Вероватно сви морамо бити упознати са већином концепата, али неће сметати ако све то организујемо овде.
Врсте функционалних испитивања
Функционално тестирање има много категорија и оне се могу користити на основу сценарија.
У наставку се укратко говори о најистакнутијим типовима:
Јединствено тестирање обично изводи програмер који пише различите јединице кода које би могле бити повезане или неповезане да би се постигла одређена функционалност. Његово, ово обично подразумева писање јединичних тестова који би позивали методе у свакој јединици и валидирали их када се предају потребни параметри, а његова повратна вредност је онаква каква се очекује.
Покривеност кодом је важан део јединственог тестирања где тест случајеви морају да постоје како би се покрила следећа три:
и) Покривеност линије
ии) Покривеност путање кода
иии) Покривеност методе
Испитивање разумности : Тестирање које се врши како би се осигурало да све главне и виталне функционалности апликације / система раде исправно. То се обично ради након теста на дим.
Испитивање дима : Тестирање које се врши након сваке верзије пушта се ради тестирања како би се осигурала стабилност верзије. Такође се назива тестирање верификације градње.
Регресиони тестови : Тестирање је изведено како би се осигурало да додавање новог кода, побољшања, исправљање грешака не нарушава постојећу функционалност нити узрокује било какву нестабилност и још увек ради према спецификацијама.
Регресиони тестови не морају бити толико опсежни као стварни функционални тестови, већ би требало да осигурају само количину покривености која потврђује да је функционалност стабилна.
Тестови интеграције : Када се систем ослања на више функционалних модула који могу појединачно да раде савршено, али морају да раде кохерентно када су удружени да би се постигао крај до краја, валидација таквих сценарија назива се тестирање интеграције.
Бета / Испитивање употребљивости : Производ је изложен стварном купцу у производњи попут окружења и они га тестирају. Из тога произилази удобност корисника и узимају се повратне информације. Ово је слично тестирању за прихватање корисника.
Представимо ово на лаганом дијаграму тока:
Испитивање функционалног система:
Тестирање система је испитивање које се изводи на комплетном систему да би се верификовало да ли ради како се очекује након што се интегришу сви модули или компоненте.
Тестирање од краја до краја врши се ради провере функционалности производа. Ово тестирање се врши само када је тестирање системске интеграције завршено, укључујући и функционалне и нефункционалне захтеве.
=> Разлика између јединственог, функционалног и интеграционог тестирања
Процес
Овај поступак тестирања има три главна корака:
Приступ, технике и примери
Функционално или бихевиорално тестирање генерише излаз на основу задатих улаза и утврђује да ли систем правилно функционише према спецификацијама.
Стога ће сликовни приказ изгледати као што је приказано у наставку:
Критеријуми за улазак / излазак
Критеријуми за улазак:
- Документ о спецификацији захтева је дефинисан и одобрен.
- Припремљени су тест случајеви.
- Подаци о тестовима су створени.
- Окружење за тестирање је спремно, сви потребни алати су доступни и спремни.
- Комплетна или делимична апликација је развијена и јединствено тестирана и спремна за тестирање.
Излазни критеријуми:
- Завршено је извршење свих случајева функционалних тестова.
- Нису отворене критичне грешке или грешке П1, П2.
- Пријављене грешке су препознате.
Укључени кораци
У наставку су наведени различити кораци који су укључени у ово тестирање:
- Први корак који је укључен је утврђивање функционалности производа који треба тестирати и укључује тестирање главних функционалности, стања грешака и порука, тестирање употребљивости, тј. Да ли је производ прилагођен кориснику или не, итд.
- Следећи корак је стварање улазних података за функционалност која ће се тестирати према спецификацији захтева.
- Касније, из спецификације захтева, излаз се одређује за функционалност која се тестира.
- Извршени су припремљени тест случајеви.
- Стварни излаз, тј. Излаз након извршења тест случаја и очекивани излаз (утврђени спецификацијом захтева) се упоређују како би се утврдило да ли функција ради како се очекује или не.
Приступ
Различите врсте сценарија могу се замислити и написати у облику „тест случајева“. Као КА људи, сви знамо како изгледа костур тест случаја.
Углавном има четири дела:
- Резиме теста
- Предуслови
- Пробни кораци и
- Очекивани резултати.
Покушај писања сваке врсте теста не само да је немогућ већ је и дуготрајан и скуп.
Типично бисмо желели да откријемо максимални број грешака без било каквог бекства са постојећим тестовима. Стога КА треба да користи технике оптимизације и да стратегира како би приступили тестирању.
Објаснимо ово са пример.
Примери примера функционалног тестирања:
Узмите мрежни ХРМС портал на који се запослени пријављује са својим корисничким налогом и лозинком. На страници за пријављивање налазе се два текстуална поља за корисничко име и лозинку и два дугмета: Пријава и Откажи. Успешна пријава води корисника на почетну страницу ХРМС-а, а отказивање ће отказати пријаву.
Спецификације су приказане испод:
# 1) Поље корисничког ИД-а заузима најмање 6 знакова, највише 10 знакова, бројеве (0-9), слова (а-з, А-з), посебне знакове (дозвољено је само подвлачење, тачка, цртица) и не може да остане празно. Кориснички ИД мора почињати знаком или бројем, а не посебним знаковима.
#два) Поље за лозинку заузима најмање 6 знакова, највише 8 знакова, бројеве (0-9), слова (а-з, А-З), посебне знакове (све) и не може бити празно.
Основни приступ тестирању овог сценарија може се класификовати у две широке категорије:
- Позитивно тестирање и
- Негативно тестирање
Свака од ових категорија има свој пододељак тестова који ће се спровести.
Позитивни тестови су срећни тестови који се раде како би се осигурало да производ испуњава - бар основне захтеве који су од виталног значаја за употребу купаца.
Негативни сценарији осигурајте да се производ понаша правилно чак и када је изложен неочекиваним подацима.
Предложено читање => Шта је негативно тестирање и како писати негативне тест случајеве
Сада, дозволите ми да покушам да структурирам технике тестирања користећи доњи дијаграм тока. Ући ћемо у детаље сваког од тих тестова.
Технике функционалног испитивања
# 1) Системски тестови засновани на крајњем кориснику
Систем који се тестира може имати много компонената које када се споје заједно постижу кориснички сценарио.
У Пример , сценариј купца би обухватио задатке попут учитавања ХРМС апликације, уноса исправних акредитива, одласка на почетну страницу, извођења неких радњи и одјаве из система. Овај основни ток мора радити без грешака за основни пословни сценарио.
где могу да нађем свој мрежни кључ
У наставку су дати неки узорци:
Сл бр | Резиме | Предуслов | Тест случај | Очекивани резултати. |
---|---|---|---|---|
1. | Потпуно привилеговани корисник може да врши промене налога | 1) Кориснички налог мора да постоји 2) Корисник треба да има потребне привилегије | 1) Корисник уноси корисничко име и лозинку 2) Корисник види дозволе за уређивање да би изменио сам рачун 3) Корисник мења податке о налогу и чува их. 4) Корисник се одјављује. | 1) Корисник је пријављен на почетну страницу 2) Кориснику се приказује екран за уређивање. 3) Подаци о налогу се чувају 4) Корисник се враћа на страницу за пријављивање |
2. | Још један важећи корисник без пуних привилегија | 1) Кориснички налог мора да постоји 2) Корисник треба да има минималне привилегије | 1) Корисник уноси корисничко име и лозинку 2) Корисник види дозволе за уређивање за измену само одређених поља. 3) Корисник мења само та поља и чува. 4) Корисник се одјављује. | 1) Корисник је пријављен на почетну страницу 2) Екран за уређивање приказује се кориснику само у одређеним пољима. Поља налога су сива. 3) Измењена поља се чувају 4) Корисник се враћа на страницу за пријављивање |
Ово је основни пример како се испитују случајеви за одређене ситуације. Горњи формат примењиваће се и на све доленаведене тестове. Ради јаког концептуалног утемељења, ставио сам само неке једноставне тестове горе и доле.
# 2) Тестови еквиваленције
У Еквивалентна партиција , подаци о тесту су одвојени у различите партиције које се називају класе података еквиваленције. Подаци на свакој партицији морају се понашати на исти начин, стога треба тестирати само један услов. Слично томе, ако један услов у партицији не функционише, онда ниједан од осталих неће функционисати.
На пример , у горњем сценарију поље корисничког ИД-а може имати највише 10 знакова, па би се уношење података> 10 требало понашати на исти начин.
# 3) Испитивања граничне вредности
Гранични тестови подразумевају ограничења података за апликацију и потврђују како се она понаша.
Стога, ако се улази дају преко граничних вредности, онда се то сматра негативним испитивањем. Дакле, минимално 6 знакова за корисника поставља ограничење границе. Тестови написани да имају кориснички ИД<6 characters are boundary analysis tests.
# 4) Тестови засновани на одлуци
Тестови засновани на одлукама усредсређени су на идеологију могућих исхода система када је испуњен одређени услов.
У горе наведеном сценарију, могу се одмах извести следећи тестови засновани на одлукама:
- Ако су унети погрешни акредитиви, то би требало да означе кориснику и поново учитају страницу за пријављивање.
- Ако корисник унесе исправне акредитиве, требало би да га одведе до следећег корисничког интерфејса.
- Ако корисник унесе исправне акредитиве, али жели да откаже пријаву, тада не би требало да одведе корисника до следећег корисничког интерфејса и поново учита страницу за пријављивање.
# 5) Алтернативни тестови протока
Покрећу се тестови алтернативне путање да би се потврдили сви могући начини који постоје, осим главног тока за постизање функције.
# 6) Ад-хоц тестови
Када се већина грешака открије помоћу горе наведених техника, ад-хоц тестови су одличан начин да се открију сва одступања која раније нису уочена. Они се изводе са размишљањем да разбију систем и виде да ли реагује елегантно.
На пример , узорак тест случаја би био:
- Корисник је пријављен, али администратор брише кориснички налог док обавља неке операције. Било би занимљиво видети како апликација то грациозно решава.
Функционално вс нефункционално тестирање:
Нефункционални тестови усредсредити се на квалитет апликације / система у целини. Стога се покушава утврдити колико систем добро функционише према захтевима купца за разлику од функције коју обавља.
=> Тачну разлику прочитајте овде
Функционална аутоматизација испитивања
Можемо ли аутоматизовати функционалне тестове?
Помоћу аутоматизације може се смањити ручни напор, уштедети време, избећи клизање грешака и повећати ефикасност.
Међутим, није могуће аутоматизовати све и свашта. Ово тестирање се може аутоматизовати, али корисник треба да разрађује тест случајеве за аутоматизацију. Важно је пронаћи праве тест случајеве који ће се аутоматизовати заједно са одговарајућим алатом.
Аутоматизација функционалних случајева може имати недостатака, на пример, ако је број тест случајева много већи и ако се изнова и изнова регресира (што мора бити учињено), програмер би се могао суочити са проблемом при извршавању промена кода.
Много пута током извођења анализе бекства са дефектима, чини се да истакнути и вишегодишњи узрок бекства недостаје покривеност тестом у одређеној функцији.
Опет, постоји неколико узрока да се ово догоди, као што су недостатак окружења, недостатак тестера, превише функција које се испоручују, мање времена за покривање свих аспеката тестирања, а понекад и једноставно превиђање.
Иако би наменски испитни тимови могли да изврше детаљна испитивања на сваком спринту или сваком тестном циклусу, недостаци ће увек постојати и увек ће бити недостатака који би могли пропустити. Ово је једна од основних потреба за успостављањем аутоматизације испитивања, чиме се постиже значајно побољшање ефикасности целокупног процеса испитивања и покривености тест случајева.
Иако аутоматизовано тестирање никада не може заменити ручна испитивања, показивање идеалне комбинације ова два показаће се виталним за постизање жељеног квалитета у пројектима софтвера.
Разматрања о аутоматизацији:
# 1) Изаберите одговарајући алат за аутоматизацију : На тржишту је доступно неколико алата, прави алат за аутоматизацију је прави застрашујући задатак! Међутим, могли бисте да направите листу захтева на основу којих можете да одаберете који алат за аутоматизацију да користите.
Неки од примарних аспеката којих треба размишљати укључују:
- Изаберите алат који ће бити лако користити свим члановима КА тима ако већ немају потребне вештине.
- Алат се може користити у различитим окружењима. За Пример : Да ли се скрипте могу креирати на једној ОС платформи, а покретати на другој? Да ли вам је потребна ЦЛИ аутоматизација, аутоматизација корисничког интерфејса, аутоматизација мобилних апликација или све друго?
- Алат мора имати све карактеристике које су вам потребне. За Пример : Ако неки тестери нису добро упућени у језик скрипти, алат би требао имати функцију снимања и репродукције, а затим подржати конверзију снимљене скрипте у жељени језик скриптирања. Исто тако, ако вам је такође потребан алат за подршку аутоматским тестовима израде, специфичном извештавању и евидентирању, онда то такође мора бити у стању да уради.
- Алат мора бити у стању да подржи поновну употребу тест случајева у случају промена корисничког интерфејса.
Алати за аутоматизацију : Постоји доста алата који су доступни за функционалну аутоматизацију. Селен је вероватно омиљени фаворит, али постоје и неки други алати отвореног кода попут Сахи, Ватир, Роботиум, АутоИт итд.
На тржишту је доступно неколико алата за аутоматизацију испитивања. Али одабир одговарајућег алата је веома важан за организацију. То може зависити од потребе, лакоће употребе и трошкова овде игра главну улогу.
У наставку су дати неки од најбољих алата за функционално тестирање:
- Селен
- КТП
- Јунит
- Лоадруннер
- САПУН
- ТестЦомплете
=> Погледајте ову комплетну листу најбољих функционалних алата за аутоматизацију
#два) Изаберите праве тестове за аутоматизацију : Ако желите да из аутоматизације извучете најбоље, онда је витално бити паметан у погледу врста тестова које одаберете за аутоматизацију. Ако постоје тестови који захтевају подешавање и конфигурацију током укључивања и искључивања, онда је то најбоље не аутоматизовати.
Према томе, можете аутоматизовати тестове који:
- Потребно је водити више пута.
- Покрените са различитим врстама података.
- Неки случајеви П1, П2 захтевају много труда и времена.
- Тестови склони грешкама.
- Скуп тестова које треба покренути у различитим окружењима, прегледачима итд.
# 3) Наменски тим за аутоматизацију : Ово је вероватно занемарено у већини организација и аутоматизација се намеће свим члановима КА тима.
Сваки члан тима има различите нивое искуства, скупове вештина, нивое интереса, пропусни опсег за подршку аутоматизацији итд. Неки појединци су можда вештији у извршавању ручних тестова, док неки други могу знати алате за скриптовање и аутоматизацију.
У оваквим ситуацијама добра је пракса да се изврши анализа свих чланова тима и да се неки чланови посвете само аутоматизацији.
За аутоматизацију је потребно време, труд, знање и посвећен тим који ће помоћи у постизању потребних резултата, уместо да преоптерети све чланове тима и ручним и аутоматизацијским тестирањем.
# 4) Тестови засновани на подацима: Аутоматизовани тест случајеви који захтевају више скупова података треба да буду добро написани како би се могли поново користити. Подаци се могу писати у изворе као што су текст или датотека својстава, КСМЛ датотеке или читати из базе података.
Без обзира на извор података, стварање добро структурираних података за аутоматизацију чини оквир лакшим за одржавање и чини постојеће скрипте за тест искоришћеним у пуном потенцијалу.
# 5) Промене корисничког интерфејса не смеју прекинути тестове: Тест случајеви које креирате помоћу изабраног алата морају да буду у стању да се носе са потенцијалним променама корисничког интерфејса. На пример, раније верзије селена су користиле локацију за идентификацију елемената странице.
Стога, ако се УИ промени, ти елементи више неће бити пронађени на тим локацијама и заузврат ће довести до масовног неуспеха тестова.
Због тога је важно претходно разумети недостатке алата и написати тест случајеве тако да су потребне само минималне промене у случају промена корисничког интерфејса.
# 6) Честа тестирања: Када припремите основни сегмент за тестирање аутоматизације, планирајте чешће извршавање овог сегмента. Ово има двосмерну предност: једна је та што можете побољшати оквир за аутоматизацију и учинити је робуснијим, а друга је што ћете ухватити више грешака у процесу.
Предности
У наставку су наведене разне предности функционалног тестирања:
- Ово тестирање репродукује или представља копију стварног система, тј. Представља копију производа у живом окружењу. Тестирање је усредсређено на спецификације према употреби купца, тј. На системске спецификације, оперативни систем, прегледаче итд.
- Не ради ни на каквим и ако, али нити на било којим претпоставкама о структури система.
- Ово тестирање осигурава испоруку висококвалитетног производа који испуњава захтеве купаца и осигурава да је купац задовољан крајњим резултатима.
- Осигурава испоруку производа без грешака који има све функционалности које раде према захтевима купца.
- Тестирање засновано на ризику врши се како би се смањиле шансе за било коју врсту ризика у производу.
Ограничења
Ово тестирање се врши како би се осигурало да производ ради онако како се очекивало и да је цео захтев имплементиран и да је производ потпуно у складу са захтевима купца.
Међутим, он не узима у обзир друге факторе као што су перформансе производа, тј. Одзив, време протока итд., Који су важни и који су веома потребни да би били део тестирања пре пуштања производа.
Мане
- Много је шанси да се изврши сувишно тестирање.
- У производу се могу пропустити логичке грешке.
- Ово испитивање се заснива на захтеву, ако у случају да захтев није потпун или је сложен или није јасан, извођење овог тестирања у таквом сценарију постаје тешко и такође може потрајати.
Отуда су у основи обе ове врсте испитивања потребне за квалитетан производ.
Закључак
Овај водич је свеобухватно разговарао о свему што треба да знате о функционалном тестирању, директно од основа.
Функционално тестирање је један од важних процеса тестирања, јер се њиме верификује функционалност производа који је најтраженији и заиста важан аспект било ког производа или апликације.
О аутору: Сањаи Залавадиа - као потпредседник службе за клијенте за Зепхир , доноси преко 15 година лидерског искуства у ИТ и службама техничке подршке.
Надам се да ће неке од техника које смо предложили добро доћи свим читаоцима. Јавите нам своје мисли у коментарима испод.
Предложено читање => Водич за тестирање карактеристика
Препоручено читање
- Функционално тестирање вс нефункционално тестирање
- Алфа тестирање и бета тестирање (потпун водич)
- Најбољи алати за тестирање софтвера 2021. године (КА Тест Аутоматион Тоолс)
- Разлике између јединственог тестирања, интеграционог тестирања и функционалног тестирања
- Врсте тестирања софтвера: различите врсте испитивања са детаљима
- Споцк за интеграцију и функционална испитивања са селеном
- Комплетни водич за тестирање верификације израде (БВТ тестирање)
- Комплетан нефункционални водич за тестирање за почетнике