Koks skirtumas tarp modulinių, funkcinių, priėmimo ir integracijos testų?

Koks skirtumas tarp vieneto testavimo, funkcinio, priėmimo ir integravimo (ir bet kokių kitų tipų bandymų, kurių nepaminėčiau)?

730
05 февр. nustatė Andrew , vasario 05 d 2011-02-05 02:59 '11 at 2:59 2011-02-05 02:59
@ 8 atsakymai

Priklausomai nuo to, kur žiūrite, gausite šiek tiek skirtingus atsakymus. Aš daug skaityti apie šį dalyką, ir čia yra mano distiliavimas; vėl jie yra šiek tiek vilnūs, o kiti gali nesutikti.

Įrenginių bandymai

Patikrina mažiausią funkcionalumo vienetą, paprastai metodą / funkciją (pvz., Atsižvelgiant į klasę su konkrečia būsena, metodas, kuriuo klasėje reikia kreiptis x, turėtų sukelti y). Vieneto testai turėtų sutelkti dėmesį į vieną konkrečią funkciją (pvz., Skambinant pop metodu, kai tuščia eilutė yra tuščia, jums reikia mesti InvalidOperationException ). Viskas, ką ji veikia, turi būti atliekama atmintyje; Tai reiškia, kad bandymo kodas ir bandymo kodas neturėtų:

  • Kviesti (ne trivialus) darbuotojus
  • Prieiga prie tinklo
  • Įeikite į duomenų bazę
  • Naudokite failų sistemą
  • Sukite sriegį
  • ir kiti

Bet kokios lėtos ar sunkiai suprantamos / inicijuotos / manipuliuojančios priklausomybės turėtų būti išperkamos / išminuotos / pataisytos naudojant atitinkamus metodus, kad galėtumėte sutelkti dėmesį į tai, ką daro kodų blokas, o ne nuo jo priklausomybės.

Trumpai tariant, vieneto testai yra kuo paprastesni, lengviau derinami, patikimi (dėl išorinių veiksnių sumažėjimo), greitai atliekami ir padeda įrodyti, kad mažiausi jūsų programos elementai veikia taip, kaip buvo numatyta prieš juos sudedant. Įspėjimas yra tai, kad, nors galite įrodyti, kad jie puikiai dirba atskirai, kodo vienetai gali sprogti, kai jie sujungti, o tai leidžia mums ...

Integracijos testai

Integracijos testai grindžiami vieneto bandymais, derinant kodo vienetus ir patikrinant, ar gautas derinys veikia tinkamai. Tai gali būti arba vienos sistemos vidaus sistema, arba kelių sistemų derinys, kad kažką būtų naudinga. Be to, dar vienas dalykas, kuris išskiria integracijos bandymus nuo vieneto testų, yra aplinka. Integracijos testai gali ir bus naudojami srautams, prieigai prie duomenų bazės, arba padaryti viską, kas reikalinga, kad būtų užtikrintas teisingas visų kodų veikimas.

Jei sukūrėte tam tikrą serializacijos kodą ir blokas išbandė savo vidų, neliesdami disko, kaip jūs žinote, kad jis veiks, kai įkeliate ir įrašysite diske? Galbūt pamiršote išvalyti ir sunaikinti filė. Galbūt jūsų failų leidimai yra neteisingi ir išbandėte žarnas naudodami atminties srautus. Vienintelis būdas žinoti yra tai, kad jį tikrinti „iš tikrųjų“, naudojant aplinką, kuri yra arčiausiai gamybos.

Pagrindinis privalumas yra tai, kad jie randa klaidų, kurių negalima išbandyti vieneto testais, pavyzdžiui, ryšio klaidos (pvz., A klasės egzempliorius netikėtai gauna nulinį pavyzdį B) ir aplinkos klaidos (ji puikiai veikia mano uniprocessor mašinoje, bet mano kolegė 4 branduoliai negali išlaikyti bandymų). Pagrindinis trūkumas yra tas, kad integracijos testai apima daugiau kodų, yra mažiau patikimi, gedimus sunkiau diagnozuoti, o bandymus sunkiau prižiūrėti.

Be to, integracijos testai nebūtinai įrodo, kad veikia visa funkcija. Vartotojas negali rūpintis savo programų vidinėmis detalėmis, bet aš!

Funkciniai bandymai

Funkciniai bandymai išbando konkrečią tikslumo funkciją, lygindami šio įvesties rezultatus su specifikacija. Funkciniai bandymai nesusiję su tarpiniais rezultatais ar šalutiniais poveikiais, tik rezultatu (jie nerūpi, kad atlikus x, y y turi statusą z). Jie parašyti, kad patvirtintų specifikacijos dalis, pvz., „Skambinančioji funkcija„ Square (x) su argumentu 2 grąžina 4 “.

Priėmimo testai

Priėmimo testavimas yra panašus į suskirstymą į du tipus:

Standartiniai priėmimo testai apima bandymų atlikimą visai sistemai (pvz., Naudodami savo tinklalapį per interneto naršyklę), kad sužinotumėte, ar programos funkcionalumas atitinka specifikacijas. Pavyzdžiui. „Paspaudus didinimo piktogramą, dokumento vaizdas turėtų padidėti 25%.“ Nėra jokio realaus rezultatų tęstinumo, tiesiog pasekmės ar nesėkmės.

Privalumas yra tas, kad bandymai aprašyti paprastu anglų kalba ir užtikrinti visišką visos programinės įrangos veikimą. Trūkumas yra tas, kad perkėlėte kitą lygį iki bandymo piramidės. Priėmimo testai susiję su kodo kalnais, todėl nesėkmės stebėjimas gali būti sudėtingas.

Be to, lanksčios programinės įrangos kūrimo metu naudotojų priėmimo testavimas apima testų, skirtų kurti / sukurti programinės įrangos kliento istorijoms atspindėti, kūrimą. Jei bandymai praeina, tai reiškia, kad programinė įranga turi atitikti klientų reikalavimus, o istorija gali būti laikoma baigta. Priėmimo testų rinkinys iš esmės yra vykdoma specifikacija, parašyta konkrečioje domeno kalba, kuri apibūdina testus sistemos naudotojų vartojama kalba.

Išvada

Jie visi papildo vienas kitą. Kartais naudinga sutelkti dėmesį į vieną tipą arba visiškai juos išvengti. Svarbiausias skirtumas man yra tas, kad kai kurie bandymai žiūri į programuotojo požiūrį, o kiti naudoja kliento / galutinio vartotojo orientaciją.

1272
05 февр. Atsakymas, kurį pateikė Mark Simpson Feb 05 2011-02-05 04:32 '11 at 4:32 2011-02-05 04:32

Svarbu, kad žinotumėte, ką šie terminai reiškia jūsų kolegoms. Skirtingose ​​grupėse bus šiek tiek kitokios sąvokos, kaip tai reiškia, pavyzdžiui, kai jie sako „visiškus kompleksinius“ testus.

Neseniai aš bandžiau atlikti „Google“ paskyrimo sistemą, ir man tai patinka - jie apeina argumentus, naudodami mažą, vidutinį ir didelį. Jei norite nustatyti, kuri kategorija priklauso testui, jie mano, kad yra keli veiksniai - kiek laiko reikia paleisti, ar ji turi prieigą prie tinklo, duomenų bazės, failų sistemos, išorinių sistemų ir tt

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

border=0

Siūlyčiau, kad skirtumas tarp mažų, vidutinių ir didelių jūsų dabartinėje darbo vietoje gali skirtis nuo „Google“.

Tačiau tai yra ne tik apimtis, bet ir tikslas. Pavyzdžiui, pažymėkite požiūrį į įvairias bandymų perspektyvas. programuotojas prieš klientą / galutinį vartotoją yra labai svarbus.

77
05 февр. atsakymas duotas testerab 05 Feb. 2011-02-05 19:39 '11, 19:39, 2011-02-05 19:39

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

Martin Fowler'o dienoraštyje kalbama apie kodų testavimo strategijas (ypač mikroservice architektūroje), tačiau dauguma jų taikoma bet kuriai programai.

Cituoju jo santrauką:

  • Vieneto testai - naudokite mažiausius bandomosios programinės įrangos gabalus, kad nustatytumėte, ar jie elgsis taip, kaip tikėtasi.
  • Integracijos testai - patikrinkite ryšio kelius ir sąveiką tarp komponentų, kad aptiktų sąsajos defektus.
  • Komponentų testavimas - apriboja veikiančios programinės įrangos kiekį į bandomosios sistemos dalį, sistemos valdymą per vidines kodo sąsajas ir bandymų dubliavimą, kad būtų galima atskirti kodą, tikrina kiti komponentai.
  • Kontraktiniai patikrinimai - sąveikos išorės tarnyboje ribų patikrinimas, kuriame teigiama, kad jis atitinka sutartį, kurią tikimasi vartoti.
  • Bandymai, atliekami iš galo - įsitikinkite, kad sistema atitinka išorinius reikalavimus ir pasiekia savo tikslus bandydama visą sistemą, pradedant nuo pabaigos iki galo.
56
22 февр. atsakymas pateiktas max . vasario 22 d 2015-02-22 01:08 '15 at 1:08 2015-02-22 01:08

Bandymų įrenginiai - Kaip rodo pavadinimas, šis metodas tikrina objekto lygį. Patikrinama, ar nėra atskirų programinės įrangos komponentų. Šiam bandymui reikalingos žinios apie programą ir sukuriami bandymo kodai, siekiant patikrinti, ar programinė įranga veikia kaip numatyta.

Funkciniai bandymai atliekami be jokių žinių apie vidinį sistemos veikimą. Testeris bandys naudoti sistemą, įvykdydamas šiuos reikalavimus, pateikdamas įvairius įėjimus ir patikrindamas generuojamus išėjimus. Šis testas taip pat žinomas kaip uždaras testas arba juodas dėžutė.

Priėmimo testavimas yra galutinis bandymas, kuris atliekamas prieš perduodant programinę įrangą klientui. Jis atliekamas siekiant užtikrinti, kad sukurta programinė įranga atitiktų visus klientų reikalavimus. Yra dviejų tipų priėmimo testai: vienas, kurį atlieka plėtros komandos nariai, vadinami vidiniais priėmimo testais (alfa bandymai), o kitas, kurį atlieka klientas arba galutinis vartotojas, žinomas kaip (beta testavimas).

Integracijos testavimas - Individualūs moduliai, kuriems jau buvo atliktas vieneto testavimas, yra integruoti vienas su kitu. Paprastai laikomasi dviejų metodų:

1) Iš viršaus į apačią 2) Iš apačios į viršų

25
26 июня '15 в 1:12 2015-06-26 01:12 atsakymas duotas Šahui birželio 26 d., 15 val. 1:12 2015-06-26 01:12

Tai labai paprasta.

  • Testavimo moduliai. Šį testavimą atlieka kūrėjai, turintys žinių apie kodavimą. Šis bandymas atliekamas kodavimo etape ir yra baltos dėžės bandymo dalis. Kai programinė įranga ateina į plėtrą, ji tampa kodo ar kodo fragmentais, žinomais kaip vienetas. Ir individualų šių modulių testavimą vadina vienetų testavimu, kurį atlieka kūrėjai, kad sužinotų kai kurias žmogaus klaidas, pvz., Operatoriaus aprėpties trūkumą ir kt.

  • Funkciniai bandymai: šis bandymas atliekamas bandymų (QA) etape ir yra juodųjų dėžių bandymo dalis. Faktinis anksčiau parašytų bandymų atvejų vykdymas. Šiuos bandymus iš tikrųjų atlieka testuotojai, jie randa tikrą bet kokios svetainės funkcionalumo rezultatą ir palygina šį rezultatą su laukiamu rezultatu. Jei jie ras prieštaravimą, tai yra klaida.

  • Priėmimo testavimas: žinoti kaip UAT. Tai iš tikrųjų atlieka testuotojas, taip pat kūrėjai, vadovų komanda, autoriai, rašytojai ir visi, dalyvaujantys šiame projekte. Užtikrinti, kad projektas pagaliau būtų paruoštas pristatyti su klaidomis.

  • Integracijos testavimas: kodo vienetai (paaiškinti 1 punkte) yra integruoti vienas su kitu, kad būtų užbaigtas projektas. Šie kodo vienetai gali būti parašyti kita kodavimo technologija arba jie gali būti skirtingų versijų, todėl šį testavimą atlieka kūrėjai, kad užtikrintų visų kodo vienetų suderinamumą su kitais, ir nėra integracijos.

16
07 мая '15 в 16:24 2015-05-07 16:24 atsakymas pateikiamas Rakesh Kumar 07 gegužės 15 d. 16:24 2015-05-07 16:24

vieneto testas: žinoma, kad atskirų modulių ar nepriklausomų komponentų testavimas yra vieneto testavimas, vieneto testavimą atliks kūrėjas.

integracijos testas: visų modulių integravimas ir programos testavimas, siekiant patikrinti ryšį ir duomenų srautą tarp modulių, veikia tinkamai arba ne, šis testavimas taip pat atliekamas kūrėjų.

funkcinis bandymas atliekant individualų programos funkcinį bandymą - funkcinis testavimas

priėmimo patvirtinimas . Šį testavimą atlieka galutinis vartotojas arba klientas, neatsižvelgiant į tai, ar kūrimo programa atitinka kliento reikalavimus, o kliento specifikacija yra priėmimo testas.

4
26 апр. atsakymas pateikiamas malini 26 balandžio. 2014-04-26 15:33 '14, 15:33 2014-04-26 15:33

Aš tai paaiškinsiu praktiniu pavyzdžiu ir be teorijos:

Kūrėjas rašo kodą. Dar nėra vartotojo sąsajos. Bandymai šiame lygmenyje tikrina funkcijų teisingumą ir duomenų tipų teisingumą. Šis bandymų etapas vadinamas Vieneto bandymu.

Kai GUI sukuriama ir programa priskiriama testeriui, ji patikrina verslo reikalavimus su klientu ir atlieka įvairius scenarijus. Tai vadinama funkciniu bandymu. Čia mes suderiname klientų poreikius su taikomųjų programų srautais.

Integracijos testavimas: Leiskite mūsų programai turėti du modulius: žmogiškuosius išteklius ir finansus. HR modulis buvo pristatytas ir išbandytas anksčiau. Dabar Finansai yra suprojektuoti ir prieinami testavimui. Dabar galima naudotis tarpusavyje susijusiomis funkcijomis, todėl šiame etape tikrinsite tarpusavio bendravimo taškus ir įsitikinkite, kad jie veikia pagal reikalavimus.

Regresijos tyrimas yra dar vienas svarbus etapas, kuris vyksta po bet kokių naujų pataisų ar pataisymų. Jo tikslas - išbandyti anksčiau dirbtas funkcijas.

4
12 февр. Atsakymą pateikė fahad shaikh 12 vasaris. 2015-02-12 13:53 '15, 13:53 pm 2015-02-12 13:53

Kiti klausimai, susiję su žymes arba užduoti klausimą