Vieneto bandymai ir funkciniai bandymai

Koks skirtumas tarp vieneto testų ir funkcinių testų? Ar vieneto testas taip pat gali patikrinti funkciją?

273
30 апр. nustatė mousey balandžio 30 d 2010-04-30 04:42 '10, 4:42, 2010-04-30 04:42
@ 13 atsakymų

Vieneto testas - atskiro modulio, pvz., Metodo (funkcijos) bandymas klasėje, su visomis priklausomybėmis.

Funkcinis testas - AKA integracijos testas, sistemos funkcijų testas. Tai išbandys daugelį metodų ir gali sąveikauti su tokiomis priklausomybėmis kaip duomenų bazės ar interneto paslaugos.

172
30 апр. Atsakymas pateikiamas bpapa 30 d. 2010-04-30 04:45 '10 4:45 val. 2010-04-30 04:45

Vienetas testai nurodo kūrėjui, kad kodas daro viską teisingai; funkciniai testai nurodo kūrėjui, kad kodas veikia teisingai .

Daugiau informacijos galite rasti „ Testing Devices vs. Testing Devices“ (funkcinių bandymų tikrinimas)


Gerai paaiškintą tikrą vieneto bandymų ir funkcinių bandymų analogiją galima apibūdinti taip:

Daug kartų sistemos kūrimas buvo lyginamas su namų statyba. Nors ši analogija nėra visiškai teisinga, galime ją išplėsti ir suprasti skirtumą tarp individualių ir funkcinių testų.

Vienas bandymas yra panašus į statybos inspektorių, apsilankiusį statybvietėje. Jis orientuotas į įvairias vidines namo sistemas, pamatus, rėmus, elektros energiją, vandentiekį ir kt. Jis garantuoja (bandymus), kad namo dalys veiks tinkamai ir saugiai, ty atitinka statybos kodeksą.

Funkciniai bandymai šiame scenarijuje yra panašūs į tuos, kuriuos namų savininkas apsilanko toje pačioje statybvietėje. Jis mano, kad vidaus sistemos elgsis tinkamai, kad pastato inspektorius atliktų savo užduotį. Nuomotojas sutelkia dėmesį į tai, kaip jis gyvens šiame name. Jis yra susirūpinęs dėl to, kaip atrodo namai, ar įvairūs kambariai yra patogūs, ar namas tinka šeimoms, ar >

Namų savininkas atlieka funkcinius testus namuose. Jis turi vartotojo perspektyvą.

Pastatų inspektorius atlieka vieno namo bandymus. Jis turi statytojo perspektyvą.

border=0

Apibendrinant,

Vieni bandymai rašomi programuotojų požiūriu. Jos skirtos užtikrinti, kad tam tikras klasės metodas (arba vienetas) atliktų tam tikrų užduočių rinkinį.

Funkciniai bandymai registruojami vartotojo požiūriu. Jie užtikrina, kad sistema veiktų taip, kaip tikisi vartotojai.

389
30 апр. Atsakymą pateikė Anthony Forloney balandžio 30 d 2010-04-30 04:46 '10, 4:46, 2010-04-30 04:46
  • Vieneto bandymai atlieka nepriklausomą elgesio vienetą. Kas yra elgesio vienetas? Tai mažiausia sistemos dalis, kurią modulis gali patikrinti nepriklausomai. (Šis apibrėžimas iš tikrųjų yra apvalus, IOW iš tikrųjų nėra apibrėžimas, bet atrodo, kad praktikoje jis veikia gana gerai, nes jūs galite tai suprasti intuityviai.)

  • Funkciniai bandymai tikrina nepriklausomą funkcionalumą.


  • Elgesio vienetas yra labai mažas: nors aš visiškai nemėgstu šio kvailo mantros „vienas vieneto testas vienam metodui“, pagal dydį jis yra teisus. Elgesio vienetas yra kažkas tarp metodo dalies ir galbūt keliais būdais. Ne daugiau kaip objektas, bet ne daugiau kaip vienas.

  • Kai kurios funkcijos paprastai apima įvairius metodus ir gabalus per kelis objektus ir dažnai per kelis architektūrinius sluoksnius.


  • Vieneto testas bus kažkas panašaus: kai aš vadinu „ validate_country_code() funkciją ir jai perduosiu šalies kodą 'ZZ' , jis turėtų grįžti į false .

  • Funkcinis testas bus toks: kai užpildysiu pristatymo formą su ZZ šalies kodu, turiu nukreipti į pagalbos puslapį, kuris leidžia man pasirinkti savo šalies kodą iš meniu.


  • Vieneto testus kūrėjai rengia kūrėjų požiūriu.

  • Funkciniai bandymai gali būti adresuojami vartotojui, tokiu atveju juos sukūrė kūrėjai kartu su vartotojais (arba, galbūt, su tinkamais įrankiais ir tinkamais naudotojais, net patys vartotojai) naudotojo požiūriu. Arba jie gali būti kūrėjai (pavyzdžiui, kai jie apibūdina kai kurias vidines funkcijas, kurių vartotojui nereikia), tokiu atveju kūrėjai juos parašo kūrėjams, tačiau vis tiek iš vartotojo perspektyvos.


  • Pirmuoju atveju funkciniai testai taip pat gali būti naudojami kaip priėmimo testai ir funkcinių reikalavimų arba funkcinių specifikacijų vykdomasis kodavimas, pastaruoju atveju jie taip pat gali būti integracijos testai.

  • Dažnai atliekami dažnio bandymai, o pagrindinio išleidimo metu funkciniai bandymai niekada neturėtų pasikeisti.


113
30 апр. Jörg W Mittag atsakymas, pateiktas balandžio 30 d 2010-04-30 05:38 '10, 5:38, 2010-04-30 05:38

TL; DR:

Norėdami atsakyti į klausimą: Vieneto testavimas yra funkcinių bandymų potipis .


Yra dvi didelės grupės: funkcinis ir nefunkcinis testavimas. Geriausia (nebaigtinė) iliustracija yra viena (šaltinis: www.inflectra.com ):

2019

„Funkcinis testas“ nereiškia, kad išbandote savo kodo funkciją (metodą). Tai reiškia, kad bandote sistemos funkcionalumą - kai komandinėje eilutėje paleidžiu foo file.txt eilutės gali būti pakeistos. Priešingai, vienas vieneto testas paprastai apima vieną atvejį, kai vienas metodas - length("hello") turėtų grįžti 5, o length("hi") turėtų grįžti 2.

Taip pat žr.

11
30 апр. Atsakymas, kurį pateikė Mark Rushakoff Bal 30 2010-04-30 04:47 '10, 4:47, 2010-04-30 04:47

„Rails“ aplankas su moduliu yra skirtas atlikti jūsų modelių bandymus, funkcinis aplankas skirtas atlikti kontrolierių bandymus, o integracijos aplankas skirtas atlikti bandymus, kuriuose dalyvauja bet koks sąveikaujančių valdiklių skaičius. Šviestuvai - tai būdas organizuoti bandymų duomenis; jie yra prietaisų aplanke. Test_helper.rb faile yra numatytasis testų konfigūravimas. u galite apsilankyti.

5
29 сент. Atsakymą pateikė Bhimasen Rautaray 29 rugsėjis 2012-09-29 15:41 '12 15:41 2012-09-29 15:41

Pagal ISTQB šie du duomenys nėra palyginami. Funkciniai bandymai nėra integracijos bandymai.

Vieneto testas yra vienas iš testavimo lygių, o funkcinis testavimas yra bandymo tipas.

Iš esmės:

Sistemos (arba komponento) funkcija yra „ką ji daro“. Tai paprastai aprašoma reikalavimų specifikacijose, specifikacijose arba naudojimo atvejais.

a

Komponentų testavimas, taip pat žinomas kaip testavimo moduliai, moduliai ir programos, ieško defektų ir patikrina atskirai patikrintos programinės įrangos (pvz., Modulių, programų, objektų, klasių ir kt.) Veikimą.

Pagal ISTQB / vieneto bandymo komponentą jis gali būti funkcinis arba neveikiantis:

Komponentų testavimas gali apimti bandymų funkcionalumą ir specifines netechnines savybes, pvz., Išteklių elgesį (pvz., Atminties nuotėkį), veikimo ar patikimumo bandymus ir struktūrinius bandymus (pvz., Tirpalų aprėptį).

Citatos iš programinės įrangos testavimo fondų - ISTQB sertifikavimas

4
09 сент. atsakymą pateikė Dominik Sep 09 2015-09-09 18:18 '15, 18:18, 2015-09-09 18:18

Pagrindinis skirtumas yra tas, kad funkciniai testai išbando taikomąją programą iš išorės, naudotojo požiūriu. Vieneto testai patikrina taikymą iš vidaus, programuotojo požiūriu. Funkciniai testai turėtų padėti jums sukurti tinkamą funkciją turinčią programą ir užtikrinti, kad jos niekada nepažeistumėte. Vieneto testai turėtų padėti jums parašyti švarų ir be klaidų kodą.

Paimta iš Hario Percivalio knygos „Python TDD“

3
04 марта '17 в 5:05 2017-03-04 05:05 Atsakymas suteiktas Humoyun kovo 4 d. 17 d. 5:05 2017-03-04 05:05

Manau, kad tai atrodo taip: Vieneto testas nustato, kad kodas atlieka tai, ką ketinate daryti kodui (pvz., Norėjote pridėti parametrus a ir b, iš tikrųjų pridėti juos ir neatimti jų), funkciniai testai testai rodo, kad visi kodai veikia kartu, kad gautų teisingą rezultatą, todėl tai, ką ketinate daryti, tikrai gauna teisingą rezultatą sistemoje.

3
30 апр. Yishai atsakymas, pateiktas balandžio 30 d 2010-04-30 05:05 '10, 5:05, 2010-04-30 05:05

VIENETŲ BANDYMAS

Modulio testavimas apima mažiausio kodo vieneto, kuris paprastai yra funkcija arba metodas, bandymą. Vieneto testavimą daugiausia atlieka vienetas / metodas / funkcijos kūrėjas, nes jie supranta funkcijos esmę. Pagrindinis kūrėjo tikslas - užpildyti kodą su vieneto testais.

Tai riboja, kad kai kurios funkcijos negali būti išbandytos naudojant vieneto bandymus. Net ir sėkmingai atlikus visus vieneto testus; Tai neužtikrina tinkamo gaminio veikimo. Ta pati funkcija gali būti naudojama keliose sistemos dalyse, o vieneto testas buvo parašytas tik vienam naudojimui.

FUNKCINIAI BANDYMAI

Tai yra „Black Box“ tipo bandymas, kai bandymai bus atliekami su funkciniais gaminio aspektais, nežiūrint į kodą. Funkcinius bandymus daugiausia atlieka specialus programinės įrangos testeris. Jis apims teigiamus, neigiamus ir BVA metodus, naudojant nestandartinius duomenis, kad būtų galima patikrinti nurodytą produkto funkcionalumą. Bandymų aprėptis atliekama patobulintai, naudojant funkcinius testus, nei naudojant atskirus bandymus. Jis naudoja grafinę programos testavimo sąsają, todėl lengviau nustatyti, kuri konkreti sąsajos dalis yra atsakinga už kodų funkcijos atsakingumą.

2
15 сент. Ashish Gupta atsakymas rugsėjo 15 d 2015-09-15 08:55 '15 ne 8:55 2015-09-15 08:55

AFAIK, vieneto bandymai nėra funkciniai bandymai. Leiskite man paaiškinti nedideliu pavyzdžiu. Norite patikrinti, ar veikia internetinės el. Pašto programos prisijungimo funkcija, kaip ir naudotojas. Norėdami tai padaryti, jūsų funkciniai testai turėtų būti tokie.

 1- existing email, wrong password -> login page should show error "wrong password"! 2- non-existing email, any password -> login page should show error "no such email". 3- existing email, right password -> user should be taken to his inbox page. 4- no @symbol in email, right password -> login page should say "errors in form, please fix them!" 

Jei patikriname mūsų funkcinius testus, ar galime prisijungti su negaliojančiais įrašais? Pavyzdžiui. El. Laiške nėra @ simbolio, naudotojo varde yra daugiau nei vienas taškas (leidžiamas tik vienas taškas), ar „Com“ pasirodo prieš @ ir tt? Ne paprastai! Toks testavimas yra jūsų vieneto testų dalis.

Galite patikrinti, ar nepavyko įvesti vienetų bandymų, kaip parodyta toliau pateiktuose bandymuose.

 class LoginInputsValidator method validate_inputs_values(email, password) 1-If email is not like string.string@myapp.com, then throw error. 2-If email contains abusive words, then throw error. 3-If password is less than 10 chars, throw error. 

Atkreipkite dėmesį, kad 4 funkcinis testas iš tikrųjų atlieka 1 testo testą, o kartais funkciniai bandymai gali kartoti kai kuriuos (ne visus) testus, atliktus naudojant modulinius bandymus dėl įvairių priežasčių. Mūsų pavyzdyje mes naudojame funkcijų testą 4, kad patikrintume, ar įvedus neteisingą įvestį pasirodo klaidos pranešimas . Mes nenorime patikrinti, ar visi blogi įvedimai yra atmesti, ar ne. Tai yra vieneto bandymų užduotis.

1
31 окт. atsakymas suteiktas testerjoe2 spalis 31. 2016-10-31 06:18 '16 at 6:18 am 2016-10-31 06:18

Vieneto bandymas : - Vieneto bandymas yra ypač naudojamas gaminio komponentui išbandyti pagal komponentus, ypač kai produktas yra kuriamas. „Junit“ ir „Nunit“ įrankiai taip pat padės išbandyti gaminį pagal padalinį. ** Užuot sprendusi problemas po integracijos, visada patogu ją išspręsti ankstyvuoju vystymosi etapu.

Funkciniai bandymai: - Kalbant apie bandymus, yra du pagrindiniai bandymų tipai: 1. Funkcinis bandymas 2. Nefunkcinis bandymas.

Nefunkcinis testas yra testas, kurio metu testeris išbandys, ar gaminys atitiks visus tuos kokybės požymius, kurių klientas nemini, tačiau šie kokybės atributai turi būti. Pavyzdžiui: -Pertifikacijos, naudojimo, saugumo, atsisiuntimo, streso ir kt. tačiau funkciniame teste : - Klientas jau atitinka savo reikalavimus ir yra tinkamai dokumentuotas. Testerio užduotis - patikrinti, ar programos funkcionalumas veikia pagal siūlomą sistemą, ar ne. Šiuo tikslu testuotojas turi patikrinti, ar yra įdiegta su siūloma sistema.

1
20 февр. atsakymas, kurį pateikė mohit sarsar 20 vas. 2015-02-20 12:26 '15 at 12:26 AM 2015-02-20 12:26

Vieneto testus paprastai atlieka kūrėjai. Šio tikslo tikslas - užtikrinti, kad jų kodas tinkamai veiktų. Bendra nykščio taisyklė yra apimti visus kelio kodus su vieneto testavimu.

Funkciniai bandymai . Tai yra gera rekomendacija. Funkcinio testavimo paaiškinimas

0
06 июня '16 в 22:57 2016-06-06 22:57 atsakymas, kurį pateikė automatizavimo paslaugų teikėjas birželio 06 d. 16, 10:57 2016-06-06 22:57

Kiti klausimai apie žymių arba Užduoti klausimą