Якая розніца паміж модульнымі, функцыянальнымі, прыёмнымі і інтэграцыйнымі тэстамі?

У чым розніца паміж тэставаннем на адзінку, функцыяналу, прыёмкі і інтэграцыі (і любыя іншыя тыпы тэстаў, пра якія я не згадваў)?

730
05 февр. зададзены Andrew 05 февр. 2011-02-05 02:59 '11 у 2:59 2011-02-05 02:59
@ 8 адказаў

У залежнасці ад таго, дзе вы глядзіце, вы атрымаеце некалькі розныя адказы. Я шмат чытаў пра прадмет, і тут мая дыстыляцыя; зноў жа, яны злёгку шарсцістыя, а іншыя могуць не згаджацца.

тэсты прылад

Правярае найменшую адзінку функцыянальнасці, як правіла, метад / функцыю (напрыклад, зададзены класам з канкрэтным станам, выклік метаду x у класе павінен прывесці да таго, што y адбудзецца). Модульныя тэсты павінны быць сканцэнтраваны на адной канкрэтнай функцыі (напрыклад, пры выкліку метаду pop, калі пустая радок пустая, трэба выкінуць InvalidOperationException ). Усё, што ён закранае, павінна быць зроблена ў памяці; гэта азначае, што тэставы код і тэстоўваны код не павінен:

  • Выклічце (нетрывіяльных) супрацоўнікаў
  • Доступ да сеткі
  • Трапіць у базу дадзеных
  • Выкарыстоўваць файлавую сістэму
  • скруціце паток
  • і інш.

Любыя залежнасці, якія павольна ці цяжка зразумець / ініцыялізаваць / маніпуляваць, павінны быць заштрыхаваныя / здзекавацца / выпраўляцца з выкарыстаннем адпаведных метадаў, каб вы маглі засяродзіцца на тым, што робіць блок кода, а не на тым, што робяць яго залежнасці.

Карацей кажучы, модульныя тэсты настолькі простыя, наколькі гэта магчыма, лёгка адладжваць, надзейныя (з-за памяншэння знешніх фактараў), хутка выконваюцца і дапамагаюць даказаць, што найменшыя будаўнічыя блокі вашай праграмы функцыянуюць па прызначэнні да іх размяшчэння разам. Перасцярога заключаецца ў тым, што, хоць вы можаце даказаць, што яны працуюць ідэальна ізалявана, адзінкі кода могуць падарвацца пры аб'яднанні, што падводзіць нас да ...

інтэграцыйныя тэсты

Тэсты інтэграцыі будуюцца на модульных тэстах, камбінуючы адзінкі кода і правяраючы, што выніковая камбінацыя функцыянуе правільна. Гэта можа быць альбо ўнутраная сістэма адной сістэмы, альбо аб'яднанне некалькіх сістэм разам, каб зрабіць нешта карыснае. Акрамя таго, яшчэ адна рэч, якая адрознівае інтэграцыйныя тэсты ад модульных тэстаў, - гэта асяроддзе. Тэсты інтэграцыі могуць і будуць выкарыстоўваць патокі, доступ да базы дадзеных або рабіць усё, што неабходна для забеспячэння правільнай працы ўсіх кодаў і.

Калі вы стварылі нейкі код серыялізацыі і блок пратэставалі яго вантробы, не дакранаючыся дыска, як вы ведаеце, што ён будзе працаваць, калі вы загружаеце і захоўваеце на дыск? Магчыма, вы забыліся ачысціць і знішчыць філе. Магчыма, вашы правы на файлы няслушныя, і вы пратэставалі вантробы, выкарыстоўваючы ў патоках памяці. Адзіны спосаб даведацца напэўна - праверыць яго "на самай справе", выкарыстоўваючы сераду, якая бліжэй за ўсё да вытворчасці.

Асноўная перавага заключаецца ў тым, што яны знойдуць памылкі, якія не могуць быць пратэставаны модульнымі тэстамі, напрыклад, памылкі падлучэння (напрыклад, асобнік класа A нечакана атрымлівае нулявы асобнік B) і памылкі акружэння (ён выдатна працуе на маёй аднапрацэсарнай машыне, але мой калега 4 ядра не можа прайсці тэсты). Асноўным недахопам з'яўляецца тое, што тэсты інтэграцыі датычацца большай колькасці кода, меней надзейныя, збоі складаней дыягнаставаць, а тэсты складаней падтрымліваць.

Акрамя таго, інтэграцыйныя тэсты не абавязкова даказваюць, што працуе поўная функцыя. Карыстальнік можа не клапаціцца аб унутраных дэталях маіх праграм, але я раблю!

функцыянальныя тэсты

Функцыянальныя тэсты правяраюць пэўную функцыю для правільнасці, параўноўваючы вынікі для дадзенага ўводу са спецыфікацыяй. Функцыянальныя тэсты не датычацца прамежкавых вынікаў або пабочных эфектаў, проста вынік (ім усё роўна, што пасля выканання x аб'ект y мае стан z). Яны запісваюцца для праверкі часткі спецыфікацыі, такі як "якая выклікае функцыя Square (x) з аргументам 2 вяртае 4".

прыёмачныя тэсты

Прыёмачнае тэставанне падобна на падзел на два тыпу:

Стандартнае прыёмачнае тэставанне ўключае ў сябе выкананне тэстаў у поўнай сістэме (напрыклад, з выкарыстаннем вашай вэб-старонкі праз вэб-браўзэр), каб даведацца, задавальняе Ці функцыянальнасць прыкладання спецыфікацыі. Напрыклад. "Пстрычка значка маштабавання павінен павялічыць выгляд дакумента на 25%". Няма рэальнага кантынууму вынікаў, проста вынік праходжання або няўдачы.

Перавага складаецца ў тым, што тэсты апісаны на простым англійскай мове і забяспечваюць поўнае функцыянаванне праграмнага забеспячэння ў цэлым. Недахопам з'яўляецца тое, што вы перамясцілі яшчэ адзін узровень уверх па тэставай пірамідзе. Прыёмачныя тэсты датычацца гор кода, таму адсочванне збою можа быць складаным.

Акрамя таго, у гнуткай распрацоўцы праграмнага забеспячэння прыёмачнае тэставанне карыстальнікаў ўключае ў сябе стварэнне тэстаў для люстранога адлюстравання карыстацкіх гісторый, створаных / для кліента праграмнага забеспячэння падчас распрацоўкі. Калі тэсты праходзяць, гэта азначае, што праграмнае забеспячэнне павінна задавальняць патрабаванням кліентаў, і гісторыі можна лічыць завершанымі. Набор прыёмачных тэстаў у асноўным ўяўляе сабой выкананую спецыфікацыю, напісаную на мове, спецыфічным для дамена, які апісвае тэсты на мове, выкарыстоўваным карыстальнікамі сістэмы.

заключэнне

Яны ўсе дапаўняюць адзін аднаго. Часам бывае выгадна засяродзіцца на адным тыпе або цалкам пазбягаць іх. Асноўнае адрозненне для мяне ў тым, што некаторыя з тэстаў глядзяць на рэчы з пункту гледжання праграміста, тады як іншыя выкарыстоўваюць арыентацыю кліента / канчатковага карыстальніка.

1272
05 февр. адказ дадзены Mark Simpson 05 февр. 2011-02-05 04:32 '11 у 4:32 2011-02-05 04:32

Важна тое, што вы ведаеце, што азначаюць гэтыя тэрміны для вашых калегаў. Розныя групы будуць мець некалькі розныя вызначэння таго, што яны азначаюць, напрыклад, калі кажуць "поўныя скразныя" тэсты.

Нядаўна я сутыкнуўся з сістэмай наймення Google для сваіх тэстаў, і мне гэта вельмі падабаецца - яны абмінаюць аргументы, проста выкарыстоўваючы Small, Medium і Large. Для вызначэння таго, у якую катэгорыю ўваходзіць тэст, яны разглядаюць некалькі фактараў - колькі часу патрабуецца для запуску, ці мае ён доступ да сеткі, базы дадзеных, файлавай сістэме, знешніх сістэм і г.д.

http://googletesting.blogspot.com/2010/12/test-sizes.html

border=0

Я б выказаў здагадку, што розніца паміж Small, Medium і Large для вашага бягучага працоўнага месца можа адрознівацца ад Google.

Аднак гэта тычыцца не толькі аб'ёму, але і мэты. Адзначыць пункт гледжання на розныя перспектывы для тэстаў, напрыклад. праграміст супраць кліента / канчатковага карыстальніка, сапраўды важна.

77
05 февр. адказ дадзены testerab 05 февр. 2011-02-05 19:39 '11 у 19:39 2011-02-05 19:39

http://martinfowler.com/articles/microservice-testing/

У блогу Марціна Фаулера гаворыцца пра стратэгіі тэставання кода (асабліва ў архітэктуры микросервисов), але большая частка яго адносіцца да любога з дадаткам.

Я працытую яго зводны слайд:

  • Модульныя тэсты - выкарыстоўвайце ў дадатку найменшыя часткі тэставага праграмнага забеспячэння, каб вызначыць, ці будуць яны паводзіць сябе так, як чакалася.
  • Інтэграцыйныя тэсты - праверце шляху сувязі і ўзаемадзеяння паміж кампанентамі для выяўлення дэфектаў інтэрфейсу.
  • Тэставанне кампанентаў - абмяжоўвае аб'ём выкананага праграмнага забеспячэння часткай тэстоўванай сістэмы, кіруючы сістэмай праз ўнутраныя інтэрфейсы кода і выкарыстанне тэставых падваенне для ізаляцыі кода тэстуюцца іншымі кампанентамі.
  • Кантрактныя праверкі - праверка ўзаемадзеяння на мяжы знешняй службы, якая сцвярджае, што яна адпавядае кантракту, чаканага спажывальным абслугоўванне.
  • Тэсты End-To-End - пераканайцеся, што сістэма задавальняе вонкавым патрабаванням і дасягае сваіх мэтаў, тэстуючы ўсю сістэму, пачынаючы з ад канца да канца.
56
22 февр. адказ дадзены Maxim 22 февр. 2015-02-22 01:08 '15 у 01:08 2015/02/22 01:08

Тэставанне прылад - Як вынікае з назвы, гэты метад правярае ўзровень аб'екта. Асобныя праграмныя кампаненты правяраюцца на наяўнасць памылак. Веданне праграмы неабходна для гэтага тэсту, і тэставыя коды ствараюцца для праверкі таго, ці працуе праграмнае забеспячэнне так, як яно прызначана.

Функцыянальнае тэставанне - выконваецца без якіх-небудзь ведаў пра ўнутраную рабоце сістэмы. Тэстар паспрабуе выкарыстаць сістэму, выканаўшы наступныя патрабаванні, падаўшы розныя ўваходы і праверыўшы згенераваныя выхады. Гэты тэст таксама вядомы як закрыты тэст або чорны скрыню.

Прыёмачнае тэставанне - гэта апошні тэст, які праводзіцца да таго, як праграмнае забеспячэнне будзе перададзена кліенту. Ён выконваецца для забеспячэння таго, каб распрацаванае праграмнае забеспячэнне адказвала ўсім патрабаванням заказчыка. Існуе два тыпу прыёмачных выпрабаванняў: адзін, які выконвае члены каманды распрацоўшчыкаў, вядомыя як унутраныя прыёмачныя выпрабаванні (альфа-тэставанне), а другі, які выконваецца кліентам або канчатковым карыстальнікам, вядомым як (бэта-тэставанне)

Тэставанне інтэграцыі - Асобныя модулі, якія ўжо падвергнуты модульным тэставанні, інтэграваныя адзін з адным. Як правіла, выконваюцца два падыходу:

1) Зверху ўніз 2) Знізу ўверх

25
26 июня '15 в 1:12 2015-06-26 01:12 адказ дадзены Shah 26 чэрвеня '15 у 01:12 2015/06/26 01:12

Гэта вельмі проста.

  • Тэставанне модуляў. Гэта тэставанне, фактычна выкананае распрацоўшчыкамі, якія валодаюць ведамі ў галіне кадавання. Гэта тэставанне выконваецца на этапе кадавання, і яно з'яўляецца часткай тэставання белага скрыні. Калі праграмнае забеспячэнне прыходзіць для распрацоўкі, яно ператвараецца ў кавалак кода або фрагменты кода, вядомыя як адзінка. І індывідуальнае тэставанне гэтых модуляў называецца модульным тэставаннем, выкананым распрацоўшчыкамі, каб высветліць нейкія чалавечыя памылкі, такія як адсутнасць ахопу аператара і г.д.

  • Функцыянальнае тэставанне: гэта тэставанне выконваецца на этапе тэставання (QA), і яно з'яўляецца часткай тэставання чорнай скрыні. Фактычнае выкананне раней напісаных тэставых выпадкаў. Гэта тэставанне сапраўды выконваецца тэстыравальнікаў, яны знаходзяць фактычны вынік любой функцыянальнасці на сайце і параўноўваюць гэты вынік з чаканым вынікам. Калі яны выявілі якое-небудзь неадпаведнасць, то гэта памылка.

  • Прыёмачнае тэставанне: ведайце як UAT. І гэта фактычна зроблена тестеров, а таксама распрацоўшчыкамі, камандай менеджэраў, аўтарамі, пісьменнікамі і ўсімі, хто ўдзельнічае ў гэтым праекце. Каб гарантаваць, што праект, нарэшце, гатовы да дастаўцы з памылкамі.

  • Тэставанне інтэграцыі: адзінкі кода (растлумачаныя ў пункце 1) інтэграваныя адзін з адным для завяршэння праекта. Гэтыя адзінкі кода могуць быць запісаныя ў іншай тэхналогіі кадавання або могуць быць розных версій, таму гэта тэставанне выконваецца распрацоўшчыкамі для забеспячэння сумяшчальнасці ўсіх адзінак кода з іншымі, і няма ніякай інтэграцыі.

16
07 мая '15 в 16:24 2015-05-07 16:24 адказ дадзены Rakesh Kumar 07 мая '15 у 16:24 2015/05/07 16:24

unit test: тэставанне асобнага модуля або незалежнага кампанента ў дадатку, як вядома, з'яўляецца модульным тэставаннем, модульнае тэставанне будзе выконвацца распрацоўшчыкам.

інтэграцыйны тэст: аб'яднанне ўсіх модуляў і тэставанне прыкладання для праверкі сувязі і патоку дадзеных паміж модулямі працуюць спраўна ці не, гэта тэставанне таксама выконваецца распрацоўшчыкамі.

функцыянальны тэст праверка асобных функцыянальных магчымасцяў прыкладання азначае функцыянальнае тэставанне

прыёмачнае тэставанне. Гэта тэставанне выконваецца канчатковым карыстальнікам або кліентам незалежна ад таго, ці адпавядае прыкладанне зборкі патрабаванням кліента, а спецыфікацыя кліента - гэта прыёмачныя выпрабаванні.

4
26 апр. адказ дадзены malini 26 крас. 2014-04-26 15:33 '14 у 15:33 2014/04/26 15:33

Я растлумачу вам гэта з практычным прыкладам і без тэорыі:

Распрацоўшчык піша код. Пакуль няма графічнага інтэрфейсу карыстальніка. Тэставанне на гэтым узроўні правярае правільнасць працы функцый і правільнасць тыпаў дадзеных. Гэтая фаза тэставання называецца Unit testing.

Калі графічны інтэрфейс распрацоўваецца і дадатак прызначаецца тэстар, ён правярае бізнес-патрабаванні з кліентам і выконвае розныя сцэнары. Гэта называецца функцыянальным тэсціраваннем. Тут мы супастаўляны патрабаванні кліента з патокамі прыкладанняў.

Інтэграцыйнае тэставанне: хай наша дадатак мае два модуля: HR і Finance. Модуль HR быў дастаўлены і пратэставаны раней. Цяпер Фінансы распрацавана і даступна для тэставання. Цяпер даступныя Узаемазалежныя функцыі, таму на гэтым этапе вы праверыце пункту сувязі паміж імі і пераканайцеся, што яны працуюць у адпаведнасці з патрабаваннямі.

Рэгрэсійная тэставанне - яшчэ адна важная фаза, якая выконваецца пасля любых новых выпраўленняў ці выпраўленняў. Яго мэта - праверыць раней якія працуюць функцыі.

4
12 февр. адказ дадзены fahad shaikh 12 февр. 2015-02-12 13:53 '15 у 13:53 2015/02/12 13:53

Іншыя пытанні па пазнаках або Задайце пытанне