- Ühiktestimine vs integratsioonitestimine vs funktsionaalne testimine
- Mis on ühiktestimine?
- Mis on integratsioonitestimine?
- Ühiktestimine vs integratsioonitestimine
- Funktsionaalne testimine
- Kokkuvõte
- Soovitatav lugemine
Üksuse, integratsiooni ja funktsionaalse testimise üksikasjalik võrdlus:
Iga tarkvararakenduse puhul on nii ühiktestimine kui ka integratsioonitestimine väga oluline, kuna igaühes neist kasutatakse tarkvararakenduse testimiseks unikaalset protsessi.
Kuid ükski neist või isegi mõlemad ei saa asendada funktsionaalset testimist üheski punktis.
Ühiktestimine vs integratsioonitestimine vs funktsionaalne testimine
Üksuse testimine tähendab rakenduse üksikute moodulite isoleeritud testimist (ilma sõltuvusteta), et kinnitada, et kood teeb asju õigesti.
Integratsioonitestimine tähendab, et kontrollitakse, kas erinevad moodulid töötavad hästi, kui neid kombineeritakse rühmana.
Funktsionaalne testimine tähendab süsteemi funktsionaalsuse osa testimist (võib suhelda sõltuvustega), et kinnitada, et kood teeb õigeid asju.
Funktsionaalsed testid on seotud integratsioonitestidega, kuid need tähendavad teste, mis kontrollivad kogu rakenduse funktsionaalsust koos kogu koodiga, peaaegu et superintegratsioonitesti.
Ühiktestimine käsitleb süsteemi ühe komponendi kontrollimist, samas kui funktsionaalsuse testimine käsitleb rakenduse toimimise kontrollimist võrreldes süsteeminõude spetsifikatsioonis kirjeldatud kavandatud funktsionaalsusega. Teisalt käsitleb integratsioonitestimine süsteemi integreeritud moodulite kontrollimist.
Ja mis kõige tähtsam, investeeringu tasuvuse (ROI) optimeerimiseks peaks teie koodibaasis olema võimalikult palju ühikteste, vähem integratsiooniteste ja võimalikult vähe funktsionaalseid teste.
Seda illustreerib kõige paremini järgmine katsepüramiid:
Ühiktestide kirjutamine on lihtsam ja nende teostamine kiirem. Testide rakendamise ja hooldamisega seotud aeg ja töömaht suureneb ühiktestimisest funktsionaalse testimiseni, nagu on näidatud eespool esitatud püramiidis.
Näide:
Mõistame neid kolme tüüpi testimist ühe lihtsustatud näite abil.
Nt Toimiva mobiiltelefoni jaoks on peamised vajalikud osad "aku" ja "sim-kaart".
Üksuse testimine Näide - Kontrollitakse aku eluiga, mahutavus ja muud parameetrid. Kontrollitakse sim-kaardi aktiveerimist.
Integratsiooni testimise näide - Aku ja SIM-kaart on integreeritud, st kokku pandud, et mobiiltelefoni käivitada.
Funktsionaalne testimine Näide - Mobiiltelefoni funktsionaalsust kontrollitakse nii selle funktsioonide ja aku kasutamise kui ka sim-kaardi võimaluste osas.
Me nägime näite ilmalikust.
Võtame nüüd tehnilise näite sisselogimislehest:
Peaaegu iga veebirakendus nõuab oma kasutajatelt/klientidelt sisselogimist. Selleks peab igal rakendusel olema sisselogimisleht, millel on järgmised elemendid:
- Konto/Username
- Parool
- Sisselogimise/allkirjastamise nupp
Ühiktestimise puhul võivad testjuhtumid olla järgmised:
- Välja pikkus - kasutajanime ja parooli väljad.
- Sisendvälja väärtused peaksid olema kehtivad.
- Sisselogimisnuppu saab kasutada alles pärast seda, kui mõlemale väljale on sisestatud kehtivad väärtused (formaat ja pikkus).
Integratsioonitesti puhul võivad testjuhtumid olla järgmised:
- Pärast kehtivate väärtuste sisestamist ja sisselogimise nupu vajutamist näeb kasutaja tervitussõnumit.
- Pärast kehtivat sisestust ja sisselogimise nupule klõpsamist tuleks kasutaja suunata tervituslehele või avalehele.
Nüüd, kui ühik- ja integratsioonitestimine on tehtud, vaatame täiendavat testjuhtumid, mida käsitletakse funktsionaalseks testimiseks:
- Kontrollitakse oodatavat käitumist, st kas kasutaja saab pärast kehtiva kasutajanime ja parooli väärtuste sisestamist sisse logida, klõpsates sisselogimise nupule.
- Kas pärast edukat sisselogimist peab ilmuma tervitussõnum?
- Kas on olemas veateade, mis peaks ilmuma kehtetu sisselogimise korral?
- Kas sisselogimisväljade jaoks on salvestatud saidi küpsised?
- Kas inaktiveeritud kasutaja saab sisse logida?
- Kas kasutajatele, kes on oma parooli unustanud, on olemas link "unustasin parooli"?
Selliseid juhtumeid, mis funktsionaalse testimise käigus funktsionaalsele testijale pähe tulevad, on palju rohkem. Kuid arendaja ei saa kõiki juhtumeid ühik- ja integratsioonitestide koostamisel arvesse võtta.
Seega on palju stsenaariume, mida tuleb veel testida isegi pärast ühik- ja integratsioonitestimist.
Nüüd on aeg ükshaaval uurida üksuse, integratsiooni ja funktsionaalset testimist.
Mis on ühiktestimine?
Nagu nimigi ütleb, hõlmab see tase üksuse testimist.
Siin võib üksus olla rakenduse väikseim testitav osa, olgu see siis väikseim üksikfunktsioon, meetod jne. Tarkvaraarendajad on need, kes kirjutavad üksuse testjuhtumid. Eesmärk on siinkohal viia vastavusse nõuded ja üksuse oodatav käitumine.
Allpool on toodud mõned olulised punktid ühiktestimise ja selle eeliste kohta:
- Tarkvaraarendajad teevad ühiktestimise enne integratsioonitestimist, kasutades valge kasti testimistehnikaid.
- Ühiktestimine ei kontrolli mitte ainult positiivset käitumist, st õiget väljundit kehtiva sisendi korral, vaid ka ebaõigete sisendite korral tekkivaid tõrkeid.
- Probleemide/vigade leidmine varajases etapis on väga kasulik ja vähendab projekti kogukulusid. Kuna ühiktestimine toimub enne koodi integreerimist, saab selles etapis leitud probleemid väga lihtsalt lahendada ja nende mõju on samuti väga väike.
- Ühikutestiga testitakse väikeseid kooditükke või üksikuid funktsioone, nii et nendes testjuhtumites leitud probleemid/vead on sõltumatud ja ei mõjuta teisi testjuhtumeid.
- Teine oluline eelis on see, et ühiku testjuhtumid lihtsustavad ja muudavad koodi testimise lihtsamaks. Nii on lihtsam lahendada probleeme ka hilisemas etapis, kuna testida tuleb ainult viimast muudatust koodis.
- Ühiktestimine säästab aega ja kulusid ning on korduvkasutatav ja kergesti hooldatav.
JUnit (Java raamistik), PHPUnit (PHP raamistik), NUnit (.Net raamistik) jne on populaarsed ühiktestimise vahendid, mida kasutatakse erinevate keelte jaoks.
Mis on integratsioonitestimine?
Integratsioonitestimine on süsteemi eri osade omavahelise integreerimise testimine. Süsteemi kaks erinevat osa või moodulit integreeritakse kõigepealt ja seejärel viiakse läbi integratsioonitestimine.
Integratsioonitestimise eesmärk on kontrollida süsteemi funktsionaalsust, töökindlust ja jõudlust integreerimisel.
Integratsioonitestimine viiakse läbi moodulite puhul, mida testitakse esmalt ühikuga, ning seejärel määratakse integratsioonitestimisega kindlaks, kas moodulite kombinatsioon annab soovitud tulemuse või mitte.
Integratsioonitestimist võivad teha kas sõltumatud testijad või ka arendajad.
Integratsioonitestimise lähenemisviise on 3 erinevat tüüpi. Räägime lühidalt igast neist:
a) Suure paugu integratsiooni lähenemisviis
Selle lähenemisviisi puhul integreeritakse ja testitakse kõiki mooduleid või üksusi ühe korraga tervikuna. Seda tehakse tavaliselt siis, kui kogu süsteem on integratsioonitestimiseks valmis ühel hetkel.
Palun ärge ajage segi seda integratsioonitestimise lähenemisviisi süsteemitestimisega, sest testitakse ainult moodulite või üksuste integreerimist, mitte kogu süsteemi, nagu seda tehakse süsteemitestimise puhul.
Suure paugu lähenemise peamine eelis on see, et kõike integreeritud on testitud korraga.
Üks peamine ebasoodsad tingimused on see, et rikkeid on raske tuvastada.
Näide: Alljärgneval joonisel on üksused 1-6 integreeritud ja testitud, kasutades Big bangi lähenemisviisi.
b) Ülalt-alla lähenemisviis
Üksuste/moodulite integreerimist testitakse samm-sammult ülalt alla.
Esimest üksust testitakse eraldi, kirjutades test STUBS-i. Pärast seda integreeritakse ükshaaval madalamad tasemed, kuni viimane tase on kokku pandud ja testitud.
Ülalt-alla lähenemisviis on väga orgaaniline integreerimise viis, kuna see on kooskõlas sellega, kuidas asjad reaalses keskkonnas toimuvad.
Ainus mure selle lähenemisviisi puhul on see, et põhifunktsionaalsust testitakse lõpus.
c) alt-üles lähenemisviis
Üksusi/mooduleid testitakse alumisest kuni ülemise tasandini, samm-sammult, kuni kõik üksuste/moodulite tasandid on integreeritud ja testitud ühtse üksusena. Stimulaatorprogrammid, mida nimetatakse JUHTI Selle lähenemisviisi puhul kasutatakse probleeme või vigu on lihtsam avastada madalamatel tasanditel.
Peamine ebasoodne selle lähenemisviisi puhul on see, et kõrgema tasandi probleemid saab kindlaks teha alles lõpus, kui kõik üksused on integreeritud.
Ühiktestimine vs integratsioonitestimine
Olles piisavalt arutanud ühiktestimise ja integratsioonitestimise üle, vaatame järgnevas tabelis kiiresti läbi nende kahe erinevused:
Üksuse testimine | Integratsioonitestimine |
---|---|
Testib kogu süsteemi üksikut komponenti, st testib üksust eraldi. | Testib süsteemi komponentide koos töötamist, st katsetab mitme üksuse koostööd. |
Kiirem täitmine | Võib töötada aeglaselt |
Väline sõltuvus puudub. Kõik välised sõltuvused on mocked või stubbed out. | Nõuab suhtlemist väliste sõltuvustega (nt andmebaas, riistvara jne). |
Lihtne | Kompleksne |
Arendaja poolt läbi viidud | Testija poolt läbi viidud |
See on teatud tüüpi valge kasti testimine | See on teatud tüüpi musta kasti testimine |
Viiakse läbi testimise algfaasis ja seejärel võib seda teha igal ajal. | Peab toimuma pärast ühiktestimist ja enne süsteemitestimist. |
Odav hooldus | Kallis hooldus |
Algab mooduli spetsifikatsioonist | Algab liidese spetsifikatsioonist |
Ühiktestimine on kitsas, kuna see kontrollib vaid seda, kas iga väike kooditükk teeb seda, mida ta peaks tegema. | Selle reguleerimisala on laiem, kuna see hõlmab kogu taotlust. |
Ühiktestimise tulemuseks on koodi üksikasjalik nähtavus | Integratsioonitestimise tulemuseks on integratsioonistruktuuri üksikasjalik nähtavus. |
Paljastab ainult üksikute moodulite funktsionaalsusega seotud probleemid. Ei paljasta integratsioonivigu ega kogu süsteemi hõlmavaid probleeme. | Avastada vead, mis tekivad, kui erinevad moodulid suhtlevad omavahel, et moodustada kogu süsteem. |
Funktsionaalne testimine
Funktsionaalseks testimiseks nimetatakse musta kasti testimise meetodit, mille puhul testitakse rakenduse funktsionaalsust, et tekitada soovitud väljund teatud sisendi andmisel.
Meie tarkvara testimise protsessis teeme seda, kirjutades testjuhtumeid vastavalt nõuetele ja stsenaariumidele. Iga funktsionaalsuse puhul võib kirjutatud testjuhtumite arv varieeruda ühest kuni paljude testjuhtumiteni.
Kokkuvõte
Kõik need kolm testimisviisi on omavahel seotud.
Täieliku katvuse saavutamiseks on vaja üksuste teste koodiradade/ridade jaoks, funktsionaalseid ja integratsiooniteste, et tagada "üksuste" sidus toimimine koos.
Loodan, et see artikkel on andnud teile selge ettekujutuse Unit, Integratsiooni ja Funktsionaalne testimine koos nende erinevused, kuigi seal on palju rohkem, et need vormid testimine!!