- Модульнае тэсціраванне супраць інтэграцыйнага тэсціравання супраць функцыянальнага тэсціравання
- Што такое модульнае тэсціраванне?
- Што такое інтэграцыйнае тэсціраванне ?
- Модульнае тэсціраванне супраць інтэграцыйнага тэсціравання
- Функцыянальнае тэсціраванне
- Выснова
- Рэкамендуемая літаратура
Падрабязнае параўнанне модульнага, інтэграцыйнага і функцыянальнага тэсціравання:
Для любога праграмнага прылажэння як модульнае, так і інтэграцыйнае тэсціраванне вельмі важныя, бо кожнае з іх выкарыстоўвае унікальны працэс тэсціравання праграмнага прылажэння.
Але ні адно, ні нават абодва не могуць замяніць функцыянальнае тэсціраванне ні ў якім разе.
Модульнае тэсціраванне супраць інтэграцыйнага тэсціравання супраць функцыянальнага тэсціравання
Модульнае тэсціраванне азначае тэставанне асобных модуляў прыкладання ў ізаляцыі (без усялякага ўзаемадзеяння з залежнасцямі) для пацвердзіце, што код працуе правільна.
Інтэграцыйнае тэсціраванне азначае праверку, ці нармальна працуюць розныя модулі, калі яны аб'яднаны разам у групу.
Функцыянальнае тэсціраванне азначае тэставанне часткі функцыянальнасці ў сістэме (можа ўзаемадзейнічаць з залежнасцямі), каб пацвердзіць, што код робіць правільныя рэчы.
Функцыянальныя тэсты звязаны з інтэграцыйнымі тэстамі, аднак яны азначаюць, што тэсты праверка ўсёй функцыянальнасці прыкладання з усім кодам, які працуе разам, амаль звышінтэграцыйны тэст.
Модульнае тэсціраванне прадугледжвае праверку аднаго кампанента сістэмы, у той час як функцыянальнае тэсціраванне разглядае праверку працы прыкладання ў адпаведнасці з меркаваным функцыянальнасць, апісаная ў спецыфікацыі сістэмных патрабаванняў. З іншага боку, інтэграцыйнае тэсціраванне ўлічвае праверкуінтэграваныя модулі ў сістэму.
І, самае галоўнае, каб аптымізаваць рэнтабельнасць інвестыцый (ROI), ваша кодавая база павінна мець як мага больш модульных тэстаў, менш інтэграцыйных тэстаў і найменшую колькасць функцыянальных тэстаў.
Лепш за ўсё гэта праілюстравана ў наступнай пірамідзе тэстаў:
Модульныя тэсты прасцей напісаць і хутчэй выканаць. Час і намаганні для ўкаранення і падтрымання тэстаў павялічваюцца ад модульнага да функцыянальнага тэсціравання, як паказана ў пірамідзе вышэй.
Прыклад:
Давайце разбярэм гэтыя тры тыпы тэсціравання на спрошчаным прыкладзе.
Напр. . Для функцыянальнага мабільнага тэлефона асноўнымі часткамі, неабходнымі, з'яўляюцца «акумулятар» і «сім-карта».
Прыклад тэставання прылады – батарэя правяраецца на тэрмін службы, ёмістасць і іншыя параметры. Сім-карта правяраецца на прадмет яе актывацыі.
Прыклад тэсціравання інтэграцыі – Акумулятар і сім-карта інтэграваныя, г.зн. сабраны для запуску мабільнага тэлефона.
Функцыянальнасць Прыклад тэставання – Функцыянальнасць мабільнага тэлефона правяраецца з пункту гледжання яго функцый і выкарыстання акумулятара, а таксама магчымасці сім-карты.
Мы бачылі прыклад у тэрміны непрафесіянала.
А зараз давайце разгледзім тэхнічны прыклад старонкі ўваходу:
Амаль кожнае вэб-прыкладанне патрабуе свайго карыстальнікаў/кліентаў для ўваходу. Для гэтага кожнае прыкладанне павіннамець старонку «Уваход», якая змяшчае наступныя элементы:
- Уліковы запіс/імя карыстальніка
- Пароль
- Кнопка ўваходу/уваходу
Для модульнага тэсціравання могуць быць наступныя тэставыя прыклады:
- Даўжыня поля – палі імя карыстальніка і пароля.
- Значэнні поля ўводу павінны быць сапраўднымі.
- Кнопка ўваходу ўключана толькі пасля таго, як у абодва палі ўведзены сапраўдныя значэнні (фармат і ўздоўж).
Для тэсціравання інтэграцыі наступныя тэсты могуць быць:
- Карыстальнік бачыць прывітальнае паведамленне пасля ўводу сапраўдных значэнняў і націску кнопкі ўваходу.
- Карыстальнік павінен быць пераведзены на старонку прывітання або галоўную старонку пасля правільнага ўводу і націску кнопку «Увайсці».
Цяпер, пасля завяршэння модульнага і інтэграцыйнага тэсціравання, давайце паглядзім дадатковыя тэставыя выпадкі, якія разглядаюцца для функцыянальнага тэсціравання:
- Правяраецца чаканае паводзіны, гэта значыць, ці можа карыстальнік увайсці, націснуўшы кнопку ўваходу пасля ўводу сапраўднага імя карыстальніка і пароля.
- Ці з'явіцца прывітальнае паведамленне пасля паспяховага ўваходу?
- Ці ёсць паведамленне пра памылку, якое павінна з'яўляцца пры няправільным уваходзе?
- Ці захоўваюцца файлы cookie сайта для палёў уваходу?
- Ці можа неактываваны карыстальнік увайсці ў сістэму?
- Ці існуе спасылка «забыўся пароль» для карыстальнікаў, якія забылі свой пароль?
Такіх выпадкаў значна больш, якія прыходзяць нарозум функцыянальнага тэсціроўшчыка пры выкананні функцыянальнага тэставання. Але распрацоўшчык не можа ўзяць на сябе ўсе кейсы пры стварэнні адзінкавых і інтэграцыйных тэстаў.
Такім чынам, існуе мноства сцэнарыяў, якія яшчэ трэба праверыць нават пасля модульнага і інтэграцыйнага тэставання.
Настаў час па чарзе вывучыць модульнае, інтэграцыйнае і функцыянальнае тэсціраванне.
Што такое модульнае тэсціраванне?
Як вынікае з назвы, гэты ўзровень уключае ў сябе тэсціраванне "адзінкі".
Тут адзінка можа быць найменшай часткай прыкладання, якую можна праверыць, няхай гэта будзе самая маленькая асобная функцыя, метад і г.д. Распрацоўшчыкі праграмнага забеспячэння - гэта тыя, хто піша адзінкавыя тэсты. Мэта тут складаецца ў тым, каб адпавядаць патрабаванням і чаканым паводзінам прылады.
Ніжэй прыведзены некалькі важных момантаў аб модульным тэсціраванні і яго перавагах:
- Модульнае тэсціраванне праводзіцца перад тэставаннем інтэграцыі распрацоўшчыкамі праграмнага забеспячэння з выкарыстаннем метадаў тэсціравання белай скрыні.
- Модульнае тэсціраванне правярае не толькі станоўчае паводзіны, г.зн. правільны вывад у выпадку правільнага ўводу, але і збоі, якія ўзнікаюць пры няправільным уводзе.
- Выяўленне праблем/памылак на ранняй стадыі вельмі карысна і зніжае агульныя выдаткі на праект. Паколькі модульнае тэсціраванне праводзіцца перад інтэграцыяй кода, праблемы, выяўленыя на гэтым этапе, могуць быць вырашаны вельмі лёгка, і іх уплыў таксама значна меншы.
- Буніт-тэст правярае невялікія фрагменты кода або асобныяфункцыі, таму праблемы/памылкі, выяўленыя ў гэтых тэставых выпадках, незалежныя і не ўплываюць на іншыя тэставыя прыклады.
- Яшчэ адной важнай перавагай з'яўляецца тое, што блокавыя тэставыя выпадкі спрашчаюць і палягчаюць тэставанне кода. Такім чынам, становіцца прасцей вырашаць праблемы і на больш познім этапе, паколькі тэстуюцца толькі апошнія змены ў кодзе.
- Модульны тэст эканоміць час і грошы, яго можна шматразова выкарыстоўваць і лёгка абслугоўваць.
JUnit (фреймворк Java), PHPUnit (фреймворк PHP), NUnit (фреймворк .Net) і г.д. з'яўляюцца папулярнымі інструментамі модульнага тэсціравання, якія выкарыстоўваюцца для розных моў.
Што такое інтэграцыйнае тэсціраванне ?
Тэставанне інтэграцыі - гэта праверка інтэграцыі розных частак сістэмы разам. Дзве розныя часткі або модулі сістэмы спачатку інтэгруюцца, а потым праводзіцца інтэграцыйнае тэсціраванне.
Мэта інтэграцыйнага тэсціравання - праверыць функцыянальнасць, надзейнасць і прадукцыйнасць сістэма пры інтэграцыі.
Інтэграцыйнае тэсціраванне выконваецца на модулях, якія спачатку тэстуюцца адзінкава, а потым інтэграцыйнае тэсціраванне вызначае, ці дае камбінацыя модуляў жаданы вынік ці не.
Інтэграцыйнае тэсціраванне можа альбо праводзіцца незалежнымі тэсціроўшчыкамі або таксама распрацоўшчыкамі.
Існуюць 3 розныя тыпы падыходаў да тэсціравання інтэграцыі. Давайце коратка абмяркуем кожны з іх:
а) Падыход інтэграцыі Вялікага Выбуху
Пры гэтым падыходзе ўсе модулі або блокі інтэгруюцца і тэстуюцца як адно цэлае адначасова. Звычайна гэта робіцца, калі ўся сістэма гатовая да тэсціравання інтэграцыі ў адзін момант часу.
Калі ласка, не блытайце гэты падыход тэсціравання інтэграцыі з тэсціраваннем сістэмы, тэстуецца толькі інтэграцыя модуляў або блокаў, а не усю сістэму, як гэта робіцца пры сістэмным тэсціраванні.
Асноўная перавага падыходу вялікага выбуху заключаецца ў тым, што ўсё інтэграванае тэсціруецца адначасова.
Адна галоўная недахоп у тым, што становіцца цяжка ідэнтыфікаваць збоі.
Прыклад: На малюнку ніжэй Блокі 1 - Блок 6 інтэграваны і пратэставаны з выкарыстаннем падыходу Вялікага выбуху.
b) Падыход «зверху ўніз»
Інтэграцыя блокаў/модуляў правяраецца крок за крокам ад верхняга да ніжняга ўзроўню.
першы блок тэстуецца індывідуальна шляхам напісання тэсту STUBS. Пасля гэтага ніжнія ўзроўні інтэгруюцца адзін за адным, пакуль апошні ўзровень не будзе сабраны і пратэставаны.
Падыход зверху ўніз - гэта вельмі арганічны спосаб інтэграцыі, паколькі ён адпавядае таму, як усё адбываецца ў рэчаіснасці асяроддзе.
Адзіная занепакоенасць гэта тое, што асноўная функцыянальнасць тэстуецца ў канцы.
c) Унізе- Падыход уверх
Блокі/модулі выпрабоўваюцца ад ніжняга да верхняга ўзроўню, крок за крокам, пакуль усе ўзроўні блокаў/модуляў не будуць інтэграваныяі пратэставаны як адно цэлае. У гэтым падыходзе выкарыстоўваюцца праграмы-стымулятары пад назвай DRIVERS . Лягчэй выявіць праблемы або памылкі на больш нізкіх узроўнях.
Асноўны недахоп гэтага падыходу заключаецца ў тым, што праблемы больш высокага ўзроўню могуць быць ідэнтыфікаваныя толькі ў канцы, калі ўсе блокі скончаны быў інтэграваны.
Модульнае тэсціраванне супраць інтэграцыйнага тэсціравання
Пасля дастатковага абмеркавання модульнага і інтэграцыйнага тэсціравання, давайце хутка разгледзім адрозненні паміж імі у наступнай табліцы:
Модульнае тэсціраванне | Інтэграцыйнае тэсціраванне |
---|---|
Правярае асобны кампанент усёй сістэмы г.зн. тэстуе блок у ізаляцыі. | Тэстуе кампаненты сістэмы, якія працуюць разам, г.зн. тэстуе ўзаемадзеянне некалькіх блокаў. |
Хутчэй для выканання | Можа працаваць павольна |
Няма знешняй залежнасці. Любая знешняя залежнасць імітуецца або выдаляецца. | Патрабуецца ўзаемадзеянне са знешнімі залежнасцямі (напрыклад, базай даных, абсталяваннем і г.д.) |
Просты | Складаны |
Праводзіцца распрацоўшчыкам | Праводзіцца тэсціроўшчыкам |
Гэта тып тэсціравання белай скрынкі | Гэта гэта тып тэсціравання чорнай скрыні |
Праводзіцца на пачатковым этапе тэсціравання, а потым можа быць выканана ў любы час | Павінна праводзіцца пасля модульнага тэсціравання і перад тэставаннем сістэмы |
Таннаабслугоўванне | Дарагое абслугоўванне |
Пачынаецца са спецыфікацыі модуля | Пачынаецца са спецыфікацыі інтэрфейсу |
Блок Тэставанне мае вузкую вобласць прымянення, паколькі яно проста правярае, ці выконвае кожны маленькі фрагмент кода тое, для чаго ён прызначаны. | Яно мае больш шырокі аб'ём, паколькі ахоплівае ўсё прыкладанне |
Вынікам модульнага тэставання з'яўляецца дэталёвая бачнасць кода | Вынік інтэграцыі тэставанне - гэта дэталёвая бачнасць інтэграцыйнай структуры |
Выяўляйце праблемы толькі ў функцыянальнасці асобных модуляў. Не выяўляе памылак інтэграцыі або агульнасістэмных праблем. | Выяўляйце памылкі, якія ўзнікаюць, калі розныя модулі ўзаемадзейнічаюць адзін з адным для фарміравання агульнай сістэмы |
Функцыянальнае тэсціраванне
Метад тэсціравання чорнай скрыні, пры якім функцыянальнасць прыкладання правяраецца для атрымання жаданага выніку пры прадастаўленні пэўнага ўводу, называецца «Функцыянальнае тэсціраванне».
У нашых працэсах тэсціравання праграмнага забеспячэння мы зрабіце гэта, напісаўшы тэставыя прыклады ў адпаведнасці з патрабаваннямі і сцэнарыямі. Для любой функцыянальнасці колькасць напісаных тэстаў можа вар'іравацца ад аднаго да многіх.
Выснова
Усе гэтыя тры тыпы тэсціравання ўзаемазвязаны.
Каб дасягнуць поўнага ахопу, гэта патрабуецца мець модульныя тэсты для шляхоў/радкоў кода, функцыянальныя і інтэграцыйныя тэсты для ўпэўненасці ў тым, што "адзінкі"працаваць разам згуртавана.
Спадзяюся, што гэты артыкул даў бы вам дакладнае ўяўленне пра модульнае, інтэграцыйнае і функцыянальнае тэсціраванне разам з іх адрозненнямі, хоць у гэтых формах тэсціравання значна больш!!