- Testiranje enote Vs Integracijsko testiranje Vs Funkcionalno testiranje
- Kaj je testiranje enot?
- Kaj je testiranje integracije?
- Preizkušanje enote proti preizkušanju integracije
- Funkcionalno testiranje
- Zaključek
- Priporočeno branje
Podrobna primerjava testiranja enot, integracije in funkcionalnega testiranja:
Za vsako programsko aplikacijo je zelo pomembno tako testiranje enot kot tudi testiranje integracije, saj vsak od njiju uporablja edinstven postopek za testiranje programske aplikacije.
Vendar nobena od njih ali celo obe ne moreta nadomestiti funkcionalnega testiranja na nobeni točki.
Testiranje enote Vs Integracijsko testiranje Vs Funkcionalno testiranje
Testiranje enote pomeni testiranje posameznih modulov aplikacije ločeno (brez interakcije z odvisnostmi), da se potrdi, da koda dela stvari pravilno.
Testiranje integracije pomeni preverjanje, ali različni moduli delujejo pravilno, če so združeni v skupino.
Funkcionalno testiranje pomeni testiranje delčka funkcionalnosti v sistemu (lahko v interakciji z odvisnostmi), da se potrdi, da koda počne prave stvari.
Funkcionalni testi so povezani s testi integracije, vendar pomenijo teste, ki preverjajo funkcionalnost celotne aplikacije z vso kodo, ki teče skupaj, skoraj super test integracije.
Pri testiranju enot se preverja posamezna komponenta sistema, pri testiranju funkcionalnosti pa se preverja delovanje aplikacije glede na predvideno funkcionalnost, opisano v specifikaciji sistemskih zahtev. Po drugi strani se pri testiranju integracije preverjajo integrirani moduli v sistemu.
In kar je najpomembneje, za optimizacijo donosnosti naložbe (ROI) mora vaša baza kode vsebovati čim več testov enot, čim manj integracijskih testov in čim manj funkcionalnih testov.
To najbolje ponazarja naslednja piramida testov:
Teste enot je lažje napisati in hitreje izvesti. Čas in napor za izvajanje in vzdrževanje testov se povečujeta od testiranja enot do funkcionalnega testiranja, kot je prikazano v zgornji piramidi.
Primer:
Te tri vrste testiranja razumemo s poenostavljenim primerom.
Npr. Za delujoč mobilni telefon sta potrebna predvsem "baterija" in "kartica sim".
Testiranje enote Primer - Preveri se življenjska doba baterije, njena zmogljivost in drugi parametri. Preveri se, ali je aktivirana kartica Sim.
Primer testiranja integracije - Baterija in kartica sim sta vgrajeni, tj. sestavljeni, da se mobilni telefon zažene.
Primer funkcionalnega testiranja - Funkcionalnost mobilnega telefona se preverja glede na njegove funkcije in porabo baterije ter zmogljivosti kartice sim.
Primer smo si ogledali na laični ravni.
Vzemimo zdaj tehnični primer prijavne strani:
Skoraj vsaka spletna aplikacija zahteva prijavo uporabnikov/strank. Zato mora imeti vsaka aplikacija stran "Prijava", ki vsebuje te elemente:
- Račun/uporabniško ime
- Geslo
- Gumb za prijavo/prijavo
Pri testiranju enote so lahko testni primeri naslednji:
- Dolžina polja - polji z uporabniškim imenom in geslom.
- Vrednosti vhodnih polj morajo biti veljavne.
- Gumb za prijavo je omogočen šele, ko sta v obe polji vneseni veljavni vrednosti (Format in po dolžini).
Pri testiranju integracije so lahko testni primeri naslednji:
- Ko uporabnik vnese veljavne vrednosti in pritisne gumb za prijavo, se mu prikaže pozdravno sporočilo.
- Uporabnik mora biti po veljavnem vnosu in kliku na gumb Prijava preusmerjen na pozdravno ali domačo stran.
Po opravljenem testiranju enote in integracijskem testiranju si oglejmo dodatne testnih primerov, ki se upoštevajo pri funkcionalnem testiranju:
- Preveri se pričakovano obnašanje, tj. ali se lahko uporabnik prijavi s klikom na gumb za prijavo po vnosu veljavnih vrednosti uporabniškega imena in gesla.
- Ali se po uspešni prijavi prikaže pozdravno sporočilo?
- Ali obstaja sporočilo o napaki, ki se mora prikazati ob neveljavni prijavi?
- Ali so za polja za prijavo shranjeni piškotki spletnega mesta?
- Ali se lahko deaktivirani uporabnik prijavi?
- Ali obstaja kakšna povezava "Pozabljeno geslo" za uporabnike, ki so pozabili svoje geslo?
Takšnih primerov, ki pridejo v poštev pri funkcionalnem testiranju, je še veliko več. Razvijalec pa ne more obravnavati vseh primerov pri oblikovanju testnih primerov enote in integracije.
Tako je veliko scenarijev, ki jih je treba preizkusiti tudi po testiranju enote in integracijskem testiranju.
Zdaj je čas, da po vrsti preučimo testiranje enot, integracijo in funkcionalno testiranje.
Kaj je testiranje enot?
Kot pove že ime, ta stopnja vključuje testiranje "enote".
Pri tem je enota lahko najmanjši del aplikacije, ki ga je mogoče testirati, pa naj bo to najmanjša posamezna funkcija, metoda itd. Razvijalci programske opreme so tisti, ki pišejo testne primere enot. Pri tem je cilj uskladiti zahteve in pričakovano obnašanje enote.
Spodaj je nekaj pomembnih točk o testiranju enot in njegovih prednostih:
- Razvijalci programske opreme pred integracijskim testiranjem izvedejo testiranje enote z uporabo tehnik testiranja bele škatle.
- Testiranje enot ne preverja le pozitivnega obnašanja, tj. pravilnega izpisa v primeru veljavnega vhoda, temveč tudi napake, ki se pojavijo pri neveljavnem vhodu.
- Odkrivanje težav/hroščev v zgodnji fazi je zelo koristno in zmanjšuje skupne stroške projekta. Ker se testiranje enot opravi pred integracijo kode, je težave, odkrite v tej fazi, mogoče zelo enostavno odpraviti, njihov vpliv pa je tudi zelo majhen.
- Test enote preizkuša majhne dele kode ali posamezne funkcije, zato so težave/pomanjkljivosti, ugotovljene v teh testnih primerih, neodvisne in ne vplivajo na druge testne primere.
- Druga pomembna prednost je, da testni primeri enot poenostavijo in olajšajo testiranje kode. Tako je lažje reševati težave tudi pozneje, saj je treba testirati le zadnjo spremembo v kodi.
- Testiranje enot prihrani čas in stroške, poleg tega pa ga je mogoče ponovno uporabiti in enostavno vzdrževati.
JUnit (ogrodje Java), PHPUnit (ogrodje PHP), NUnit (.Net) itd. so priljubljena orodja za testiranje enot, ki se uporabljajo za različne jezike.
Kaj je testiranje integracije?
Integracijsko testiranje je testiranje integracije različnih delov sistema skupaj. Najprej se integrirata dva različna dela ali modula sistema, nato pa se izvede integracijsko testiranje.
Cilj integracijskega testiranja je preveriti funkcionalnost, zanesljivost in zmogljivost integriranega sistema.
Integracijsko testiranje se izvaja na modulih, ki so najprej testirani na enoto, nato pa se z integracijskim testiranjem ugotovi, ali kombinacija modulov daje želeni rezultat ali ne.
Integracijsko testiranje lahko opravijo neodvisni preizkuševalci ali tudi razvijalci.
Obstajajo tri različne vrste pristopov k testiranju integracije. Na kratko obravnavajmo vsakega od njih:
a) Pristop integracije velikega poka
Pri tem pristopu se vsi moduli ali enote integrirajo in testirajo kot celota naenkrat. To se običajno izvede, ko je celoten sistem pripravljen za testiranje integracije v eni točki.
Tega pristopa integracijskega testiranja ne zamenjujte s sistemskim testiranjem, saj se testira le integracija modulov ali enot in ne celotnega sistema, kot se to počne pri sistemskem testiranju.
Glavne značilnosti pristopa velikega poka prednost je, da je vse integrirano preizkušeno naenkrat.
Eden glavnih pomanjkljivost je, da je težko prepoznati napake.
Primer: Na spodnji sliki so enote od 1 do 6 integrirane in preizkušene s pristopom velikega poka.
b) Pristop od zgoraj navzdol
Vključevanje enot/modulov se preizkuša od najvišje do najnižje ravni po korakih.
Prva enota se preizkusi posamično s pisanjem testnih STUBS-a. Nato se nižje ravni integrirajo ena za drugo, dokler se ne sestavi in preizkusi zadnja raven.
Pristop od zgoraj navzdol je zelo organski način vključevanja, saj je skladen s tem, kako se stvari dogajajo v resničnem okolju.
Edini skrb pri tem pristopu je, da se glavna funkcionalnost preizkusi na koncu.
c) pristop od spodaj navzgor
Enote/moduli se preizkušajo od najnižje do najvišje ravni, korak za korakom, dokler se vse ravni enot/modulov ne povežejo in preizkusijo kot ena enota. Stimulacijski programi, imenovani VOZNIKI Pri tem pristopu se uporabljajo naslednje metode: lažje je odkriti težave ali napake na nižjih ravneh.
Glavni pomanjkljivost tega pristopa je, da je mogoče vprašanja na višji ravni opredeliti šele na koncu, ko so vključene vse enote.
Preizkušanje enote proti preizkušanju integracije
Po dovolj razpravah o testiranju enote in integracijskem testiranju si v naslednji tabeli na hitro oglejmo razlike med njima:
Testiranje enote | Testiranje integracije |
---|---|
Preizkuša posamezno komponento celotnega sistema, tj. testira enoto v izolaciji. | Preizkusi delovanje komponent sistema skupaj, tj. preizkusi sodelovanje več enot. |
Hitrejše izvajanje | Lahko deluje počasi |
Brez zunanje odvisnosti. Vsaka zunanja odvisnost je zasmehovana ali izločena. | Zahteva interakcijo z zunanjimi odvisnostmi (npr. zbirka podatkov, strojna oprema itd.) |
Enostavno | Kompleksni |
Izvajalec | Izvede preizkuševalec |
Gre za vrsto testiranja bele škatle | Gre za vrsto testiranja črne skrinjice |
Izvede se v začetni fazi testiranja, nato pa se lahko izvede kadar koli. | Izvesti ga je treba po testiranju enote in pred testiranjem sistema. |
Poceni vzdrževanje | Drago vzdrževanje |
Začne se s specifikacijo modula. | Začne se s specifikacijo vmesnika. |
Testiranje enot ima ozek obseg, saj preverja le, ali vsak majhen del kode počne to, kar je predvideno. | Ima širše področje uporabe, saj zajema celotno aplikacijo. |
Rezultat testiranja enote je podrobna preglednost kode. | Rezultat testiranja integracije je podrobna preglednost integracijske strukture. |
Odkrije težave v okviru funkcionalnosti posameznih modulov. Ne razkrije napak pri integraciji ali težav na ravni celotnega sistema. | odkrivanje napak, ki se pojavijo, ko različni moduli medsebojno vplivajo na celoten sistem. |
Funkcionalno testiranje
Tehnika testiranja črne skrinjice, pri kateri se testira funkcionalnost aplikacije, da ob vnosu določenega vhodnega podatka ustvari želeni izhod, se imenuje "funkcionalno testiranje".
V naših postopkih testiranja programske opreme to storimo tako, da napišemo testne primere v skladu z zahtevami in scenariji. Za vsako funkcionalnost je lahko število napisanih testnih primerov od enega do več.
Zaključek
Vse te tri vrste testiranja so med seboj povezane.
Da bi dosegli popolno pokritost, je treba imeti teste enot za poti/vrstice kode, funkcionalne teste in integracijske teste, ki zagotavljajo, da "enote" delujejo skupaj in skladno.
Upam, da vam je ta članek dal jasno predstavo o enotah, integraciji in funkcionalnem testiranju ter njihovih razlikah, čeprav je teh oblik testiranja še veliko več!!