- Testiranje jedinica vs integracijsko testiranje vs funkcionalno testiranje
- Šta je jedinično testiranje?
- Šta je integracijsko testiranje ?
- Jedinično testiranje vs Integracijsko testiranje
- Funkcionalno testiranje
- Zaključak
- Preporučena literatura
Detaljno poređenje jediničnog, integracijskog i funkcionalnog testiranja:
Za bilo koju softversku aplikaciju, i testiranje jedinica, kao i testiranje integracije, vrlo je važno jer svako od njih koristi jedinstveni proces za testiranje softverske aplikacije.
Ali bilo koji ili čak oba ne mogu zamijeniti funkcionalno testiranje u bilo kojem trenutku.
Testiranje jedinica vs integracijsko testiranje vs funkcionalno testiranje
Testiranje jedinica znači testiranje pojedinačnih modula aplikacije u izolaciji (bez ikakve interakcije s ovisnostima) kako bi se potvrdite da kod radi stvari kako treba.
Testiranje integracije znači provjeru da li različiti moduli rade dobro kada se kombiniraju zajedno kao grupa.
Funkcionalno testiranje znači testiranje dijela funkcionalnosti u sistemu (može biti u interakciji s ovisnostima) kako bi se potvrdilo da kod radi prave stvari.
Funkcionalni testovi su povezani s integracijskim testovima, međutim, oni označavaju testove da provjerite funkcionalnost cijele aplikacije sa cijelim kodom koji radi zajedno, gotovo super integracijski test.
Testiranje jedinica uzima u obzir provjeru jedne komponente sistema, dok testiranje funkcionalnosti razmatra provjeru rada aplikacije u odnosu na predviđenu funkcionalnost opisana u specifikaciji sistemskih zahtjeva. S druge strane, integracijsko testiranje razmatra provjeruintegrisani moduli u sistem.
I, što je najvažnije, da biste optimizirali povrat ulaganja (ROI), vaša baza koda bi trebala imati što više jediničnih testova, manje integracijskih testova i najmanji broj funkcionalnih testova.
Ovo je najbolje ilustrovano u sljedećoj testnoj piramidi:
Testove jedinica je lakše pisati i brže se izvode. Vrijeme i trud za implementaciju i održavanje testova povećavaju se od jediničnog testiranja do funkcionalnog testiranja kao što je prikazano u gornjoj piramidi.
Primjer:
Hajde da razumijemo ove tri vrste testiranja sa previše pojednostavljenim primjerom.
Npr. . Za funkcionalan mobilni telefon, glavni potrebni dijelovi su “baterija” i “sim kartica”.
Primjer testiranja jedinice – Baterija se provjerava za njen vijek trajanja, kapacitet i druge parametre. Sim kartica se provjerava da li je aktivirana.
Primjer testiranja integracije – Baterija i sim kartica su integrirane, odnosno sastavljene kako bi se mobilni telefon pokrenuo.
Funkcionalno Primjer testiranja – Funkcionalnost mobilnog telefona se provjerava u smislu njegovih karakteristika i potrošnje baterije kao i mogućnosti SIM kartice.
Vidjeli smo primjer u laički uslovi.
Sada, uzmimo tehnički primjer stranice za prijavu:
Skoro svaka web aplikacija zahtijeva korisnika/kupaca da se prijave. Za to, svaka aplikacija moraimaju stranicu “Prijava” koja ima ove elemente:
- Račun/korisničko ime
- Lozinka
- Dugme za prijavu/prijavu
Za testiranje jedinica, sljedeći mogu biti testni slučajevi:
- Dužina polja – polja korisničkog imena i lozinke.
- Vrijednosti polja za unos trebaju biti važeće.
- Dugme za prijavu je omogućeno tek nakon što su važeće vrijednosti (Format i po dužini) unesene u oba polja.
Za testiranje integracije, sljedeći mogu biti testni slučajevi:
- Korisnik vidi poruku dobrodošlice nakon što unese valjane vrijednosti i pritisne dugme za prijavu.
- Korisnik treba da bude navigiran na stranicu dobrodošlice ili početnu stranicu nakon valjanog unosa i klika dugme Prijava.
Sada, nakon što se završi testiranje jedinice i integracije, pogledajmo dodatne testne slučajeve koji se razmatraju za funkcionalno testiranje:
- Provjerava se očekivano ponašanje, tj. da li se korisnik može prijaviti klikom na dugme za prijavu nakon što unese važeće korisničko ime i vrijednost lozinke.
- Da li postoji poruka dobrodošlice koja se pojavljuje nakon uspješne prijave?
- Postoji li poruka o grešci koja bi se trebala pojaviti na nevažećoj prijavi?
- Da li postoje pohranjeni kolačići web stranice za polja za prijavu?
- Može li se neaktivirani korisnik prijaviti?
- Postoji li link 'zaboravljena lozinka' za korisnike koji su zaboravili svoje lozinke?
Ima mnogo više ovakvih slučajeva koji dolaze doum funkcionalnog ispitivača dok obavlja funkcionalno testiranje. Ali programer ne može uzeti u obzir sve slučajeve dok pravi jedinice i integracijske testne slučajeve.
Dakle, postoji mnogo scenarija koji tek treba da se testiraju čak i nakon testiranja jedinica i integracije.
Sada je vrijeme da ispitamo jedinično, integracijsko i funkcionalno testiranje jedno po jedno.
Šta je jedinično testiranje?
Kao što ime govori, ovaj nivo uključuje testiranje 'Jedinice'.
Ovdje jedinica može biti najmanji dio aplikacije koji se može testirati, bilo da je to najmanja pojedinačna funkcija, metoda itd. Programeri softvera su ti koji pišu slučajeve jediničnih testova. Ovdje je cilj uskladiti zahtjeve i očekivano ponašanje jedinice.
U nastavku je nekoliko važnih tačaka o testiranju jedinica i njegovim prednostima:
- Testiranje jedinica se radi prije Integracijskog testiranja od strane programera softvera koristeći tehnike testiranja bijele kutije.
- Testiranje jedinica ne samo da provjerava pozitivno ponašanje, tj. ispravan izlaz u slučaju valjanog unosa, već i greške koje se javljaju s nevažećim unosom.
- Pronalaženje problema/bugova u ranoj fazi je vrlo korisno i smanjuje ukupne troškove projekta. Kako se testiranje jedinica vrši prije integracije koda, problemi pronađeni u ovoj fazi mogu se vrlo lako riješiti, a njihov utjecaj je također vrlo manji.
- Jedinstveni test testira male dijelove koda ili pojedinačnefunkcije tako da su problemi/greške pronađene u ovim test slučajevima nezavisni i ne utječu na druge testne slučajeve.
- Još jedna važna prednost je to što jedinični testni slučajevi pojednostavljuju i olakšavaju testiranje koda. Dakle, postaje lakše riješiti probleme iu kasnijoj fazi jer se testira samo najnovija promjena koda.
- Jedinični test štedi vrijeme i troškove, može se ponovo koristiti i lako se održava.
JUnit (Java framework), PHPUnit (PHP framework), NUnit (.Net framework) itd. su popularni alati za testiranje jedinica koji se koriste za različite jezike.
Šta je integracijsko testiranje ?
Testiranje integracije je testiranje integracije različitih dijelova sistema zajedno. Dva različita dijela ili modula sistema se prvo integriraju, a zatim se vrši integracijsko testiranje.
Cilj integracijskog testiranja je provjeriti funkcionalnost, pouzdanost i performanse sistem kada je integrisan.
Testiranje integracije se izvodi na modulima koji se prvo testiraju na jedinici, a zatim testiranje integracije definira da li kombinacija modula daje željeni izlaz ili ne.
Testiranje integracije može ili obavljaju nezavisni testeri ili programeri.
Postoje 3 različite vrste pristupa testiranju integracije. Hajde da ukratko porazgovaramo o svakom od njih:
a) Pristup integracije Velikog praska
U ovom pristupu, svi moduli ili jedinice su integrirani i testirani kao cjelina u jednom trenutku. Ovo se obično radi kada je cijeli sistem spreman za testiranje integracije u jednom trenutku.
Ne brkajte ovaj pristup testiranja integracije sa testiranjem sistema, testira se samo integracija modula ili jedinica, a ne cijeli sistem kao što se radi u testiranju sistema.
Glavna prednost pristupa velikog praska je da se sve integrirano testira u jednom trenutku.
Jedna glavna nedostatak je to što postaje teško identificirati kvarove.
Primjer: Na donjoj slici, Jedinica 1 do Jedinica 6 su integrirani i testirani korištenjem pristupa Velikog praska.
b) Pristup odozgo prema dolje
Integracija jedinica/modula se testira od gornjeg do donjeg nivoa korak po korak.
prva jedinica se testira pojedinačno pisanjem test STUBS-a. Nakon toga, niži nivoi se integriraju jedan po jedan dok se posljednji nivo ne sastavi i testira.
Pristup odozgo prema dolje je vrlo organski način integracije jer je u skladu s načinom na koji se stvari događaju u stvarnom životu. okruženje.
Jedina zabrinutost kod ovog pristupa je da se glavna funkcionalnost testira na kraju.
c) Na dnu- Pristup gore
Jedinice/moduli se testiraju od dna do gornjeg nivoa, korak po korak, sve dok svi nivoi jedinica/modula nisu integriranii testirani kao jedna jedinica. Stimulatorni programi pod nazivom DRIVERS se koriste u ovom pristupu. Lakše je otkriti probleme ili greške na nižim nivoima.
Glavni mana ovog pristupa je da se problemi višeg nivoa mogu identificirati samo na kraju kada sve jedinice imaju je integriran.
Jedinično testiranje vs Integracijsko testiranje
Pošto smo imali dovoljno diskusije o testiranju jedinica i integracijskom testiranju, hajde da brzo prođemo kroz razlike između ta dva u sljedećoj tabeli:
Testiranje jedinica | Testiranje integracije |
---|---|
Testira jednu komponentu cijelog sistema tj. testira jedinicu u izolaciji. | Testira komponente sistema koje rade zajedno, tj. testira saradnju više jedinica. |
Brže za izvršavanje | Može se pokrenuti sporo |
Nema eksterne zavisnosti. Bilo koja vanjska ovisnost se ismijava ili uklanja. | Zahtijeva interakciju s vanjskim ovisnostima (npr. baza podataka, hardver, itd.) |
Jednostavno | Složeno |
Provodi programer | Provodi tester |
To je vrsta testiranja bijele kutije | To je je vrsta testiranja crne kutije |
Izvodi se u početnoj fazi testiranja, a zatim se može izvesti u bilo koje vrijeme | Mora se provesti nakon testiranja jedinice i prije testiranja sistema |
Jeftinoodržavanje | Skupo održavanje |
Počinje od specifikacije modula | Počinje od specifikacije interfejsa |
Jedinica testiranje ima uski opseg jer samo provjerava da li svaki mali dio koda radi ono što je namijenjen. | Ima širi opseg jer pokriva cijelu aplikaciju |
Ishod testiranja jedinice je detaljna vidljivost koda | Ishod integracije testiranje je detaljna vidljivost strukture integracije |
Otkrijte probleme unutar funkcionalnosti samo pojedinačnih modula. Ne otkriva greške u integraciji ili probleme u cijelom sistemu. | Otkrijte greške koje nastaju kada različiti moduli međusobno djeluju kako bi formirali cjelokupni sistem |
Funkcionalno testiranje
Tehnika testiranja crne kutije, gdje se testira funkcionalnost aplikacije kako bi se generirao željeni izlaz pri davanju određenog ulaza, naziva se 'Funkcionalno testiranje'.
U našim procesima testiranja softvera, mi učinite to pisanjem test slučajeva prema zahtjevima i scenarijima. Za bilo koju funkcionalnost, broj napisanih test slučajeva može varirati od jednog do više.
Zaključak
Sva ova tri tipa testiranja su u korelaciji.
Da bi se postigla puna pokrivenost, potrebno je imati jedinične testove za putanje/linije koda, funkcionalne i integracijske testove kako bi se uvjerio da su 'jedinice'rade zajedno kohezivno.
Nadam se da bi vam ovaj članak dao jasnu predstavu o jediničnom, integracijskom i funkcionalnom testiranju zajedno sa njihovim razlikama, iako ima mnogo više od ovih oblika testiranja!!