Što je testiranje jedinica?
Što je testiranje jedinica?
Ispitivanje jedinice je vrsta testiranja softvera gdje se testiraju pojedinačne jedinice ili komponente softvera. Svrha je potvrditi da svaka jedinica softverskog koda radi prema očekivanjima. Jedinično testiranje se provodi tijekom razvoja (faza kodiranja) aplikacije od strane programera. Jedinični testovi izoliraju dio koda i provjeravaju njegovu ispravnost. Jedinica može biti pojedinačna funkcija, metoda, procedura, modul ili objekt.
U modelu SDLC, STLC, V, testiranje jedinica prva je razina testiranja koja se provodi prije integracijskog testiranja. Jedinično testiranje je BijelaBox tehnika testiranja koju obično izvodi programer. No, u praktičnom svijetu zbog vremenskog ograničenja ili nevoljkosti programera prema testovima, QA inženjeri također rade jedinično testiranje.
Video objašnjenje testiranja jedinice
Zašto provoditi jedinično testiranje?
Ispitivanje jedinice važno jer programeri softvera ponekad pokušavaju uštedjeti vrijeme radeći minimalno jedinično testiranje, a to je mit jer neprikladno jedinično testiranje dovodi do visokih troškova Mana fiksiranje tijekom Ispitivanje sustava, Ispitivanje integracije pa čak i beta testiranje nakon izrade aplikacije. Ako se ispravno jedinično testiranje provodi u ranom razvoju, to na kraju štedi vrijeme i novac.
Ovdje su ključni razlozi za provođenje jediničnog testiranja u softverskom inženjerstvu:
- Jedinični testovi pomažu u ispravljanju grešaka u ranoj fazi razvojnog ciklusa i smanjuju troškove.
- Pomaže razvojnim programerima da razumiju bazu testnog koda i omogućuje im brzu izmjenu
- Dobri jedinični testovi služe kao projektna dokumentacija
- Jedinični testovi pomažu kod ponovne upotrebe koda. Migrirajte oba koda i svoje testove u svoj novi projekt. Ugađajte kod dok se testovi ne počnu ponovno.
Kako izvršiti testiranje jedinica
Kako bi izvršili jedinične testove, programeri pišu dio koda za testiranje određene funkcije u softverskoj aplikaciji. Programeri također mogu izolirati ovu funkciju radi rigoroznijeg testiranja što otkriva nepotrebne ovisnosti između funkcije koja se testira i drugih jedinica kako bi se ovisnosti mogle eliminirati. Programeri općenito koriste Okvir UnitTest za razvoj automatiziranih testnih slučajeva za jedinično testiranje.
Jedinično testiranje ima dvije vrste
- Priručnik
- Automatizirano
Jedinično testiranje obično je automatizirano, ali se ipak može izvesti ručno. Softversko inženjerstvo ne daje prednost jednom nad drugim, ali preferira automatizaciju. Ručni pristup jediničnom testiranju može uključivati dokument s uputama korak po korak.
Prema automatiziranom pristupu-
- Programer piše dio koda u aplikaciji samo da testira funkciju. Kasnije bi komentirali i na kraju uklonili testni kod kada bi se aplikacija postavila.
- Programer bi također mogao izolirati funkciju kako bi je rigoroznije testirao. Ovo je temeljitija praksa testiranja jedinice koja uključuje kopiranje i lijepljenje koda u vlastito okruženje za testiranje nego u prirodno okruženje. Izoliranje koda pomaže u otkrivanju nepotrebnih ovisnosti između koda koji se testira i drugih jedinica ili podatkovnih prostora u proizvodu. Te se ovisnosti tada mogu eliminirati.
- Programer općenito koristi UnitTest Framework za razvoj automatiziranih testnih slučajeva. Koristeći okvir za automatizaciju, programer kodira kriterije u test kako bi potvrdio ispravnost koda. Tijekom izvođenja testnih slučajeva okvir bilježi neuspješne testne slučajeve. Mnogi okviri će također automatski označiti i prijaviti, ukratko, ovo neuspjeli testni slučajevi. Ovisno o ozbiljnosti kvara, okvir može zaustaviti naknadno testiranje.
- Tijek rada testiranja jedinice je 1) Stvaranje testnih slučajeva 2) Review/Rework 3) Osnovna linija 4) Izvršite testne slučajeve.
Tehnike jediničnog testiranja
The Tehnike jediničnog testiranja uglavnom se kategoriziraju u tri dijela, a to su testiranje crne kutije koje uključuje testiranje korisničkog sučelja zajedno s ulazom i izlazom, testiranje bijele kutije koje uključuje testiranje funkcionalnog ponašanja softverske aplikacije i testiranje sive kutije koje se koristi za izvođenje paketa testova, testnih metoda , testni slučajevi i izvođenje analize rizika.
Tehnike pokrivanja koda koje se koriste u testiranju jedinica navedene su u nastavku:
- Pokrivenost izjave
- Pokrivenost odluka
- Pokrivenost podružnica
- Pokrivenost stanja
- Pokrivenost konačnog stroja stanja
Za više u refer https://www.guru99.com/code-coverage.html
Primjer jediničnog testiranja: lažni objekti
Jedinično testiranje oslanja se na lažne objekte koji se stvaraju za testiranje dijelova koda koji još nisu dio potpune aplikacije. Lažni objekti popunjavaju dijelove programa koji nedostaju.
Na primjer, možda imate funkciju koja treba varijable ili objekte koji još nisu stvoreni. U jediničnom testiranju oni će se uzeti u obzir u obliku lažnih objekata stvorenih isključivo u svrhu jediničnog testiranja obavljenog na tom dijelu koda.
Alati za testiranje jedinice
Dostupno je nekoliko automatiziranih softvera za testiranje jedinica koji pomažu u testiranju jedinica u testiranju softvera. U nastavku ćemo dati nekoliko primjera:
- Junit: Junit je besplatni alat za testiranje koji se koristi za Java programski jezik. Pruža tvrdnje za identifikaciju ispitne metode. Ovaj alat prvo testira podatke, a zatim ih umeće u dio koda.
- NUjedinica: NUnit je naširoko korišten okvir za jedinično testiranje koji se koristi za sve .net jezike. To je alat otvorenog koda koji omogućuje ručno pisanje skripti. Podržava testove temeljene na podacima koji se mogu izvoditi paralelno.
- JMockit: JMockit je alat za testiranje jedinica otvorenog koda. To je alat za pokrivanje koda s metrikom linije i putanje. Omogućuje ismijavanje API-ja sa sintaksom snimanja i provjere. Ovaj alat nudi pokrivenost linije, pokrivenost putanje i pokrivenost podacima.
- EMMA: EMMA je skup alata otvorenog koda za analizu i izvješćivanje koda napisanog u Java jezik. Emma podržava vrste pokrivenosti kao što su metoda, linija, osnovni blok. jeste Java-based tako da je bez ovisnosti o vanjskoj knjižnici i može pristupiti izvornom kodu.
- PHPUnit: PHPUnit je alat za testiranje jedinica za PHP programere. Potrebni su mali dijelovi koda koji se nazivaju jedinicama i testira se svaki od njih zasebno. Alat također omogućuje programerima da koriste unaprijed definirane metode tvrdnje kako bi potvrdili da se sustav ponaša na određeni način.
Ovo su samo neki od dostupnih alata za testiranje jedinice. Ima ih još puno, posebno za C jezici i Java, ali sigurno ćete pronaći alat za testiranje jedinica za svoje potrebe programiranja bez obzira na jezik koji koristite.
Razvoj vođen testiranjem (TDD) i testiranje jedinica
Jedinično testiranje u TDD-u uključuje opsežnu upotrebu okvira za testiranje. Okvir jediničnog testa koristi se za izradu automatiziranih jediničnih testova. Okviri za jedinično testiranje nisu jedinstveni za TDD, ali su mu bitni. U nastavku ćemo pogledati nešto od onoga što TDD donosi u svijet testiranja jedinica:
- Testovi se pišu prije šifre
- Uvelike se oslanjajte na okvire za testiranje
- Sve klase u aplikacijama su testirane
- Omogućena je brza i jednostavna integracija
Mit o testiranju jedinica
Mit: Zahtijeva vrijeme, a ja uvijek imam previše vremena
Moj kod je čvrst! Ne trebaju mi jedinični testovi.
Mitovi su po svojoj prirodi pogrešne pretpostavke. Ove pretpostavke dovode do začaranog kruga kako slijedi –
Istina je da testiranje jedinica povećava brzinu razvoja.
Programeri misle da će integracijsko testiranje uhvatiti sve pogreške i ne izvršavaju jedinični test. Jednom kada su jedinice integrirane, vrlo jednostavnim pogreškama koje su se mogle vrlo lako pronaći i popraviti tijekom testiranja jedinice potrebno je jako dugo da se uđu u trag i poprave.
Prednost jediničnog testiranja
- Programeri koji žele saznati koju funkcionalnost pruža jedinica i kako je koristiti mogu pogledati testove jedinica kako bi stekli osnovno razumijevanje API-ja jedinice.
- Jedinično testiranje omogućuje programeru da naknadno refaktorira kod i provjeri radi li modul i dalje ispravno (tj. Regresijsko ispitivanje). Procedura je pisanje testnih slučajeva za sve funkcije i metode tako da kad god promjena prouzroči grešku, ona se može brzo identificirati i popraviti.
- Zbog modularne prirode testiranja jedinica, možemo testirati dijelove projekta bez čekanja da se drugi završe.
Nedostaci jediničnog testiranja
- Ne može se očekivati da će jedinično testiranje uhvatiti svaku grešku u programu. Nije moguće procijeniti sve staze izvršenja čak ni u najtrivijalnijim programima
- Jedinično testiranje se po svojoj prirodi fokusira na jedinicu koda. Stoga ne može uhvatiti pogreške integracije ili opće pogreške na razini sustava.
Preporuča se da se jedinično testiranje koristi zajedno s drugim aktivnostima testiranja.
Najbolji primjeri testiranja jedinica
- Jedinični testni slučajevi trebaju biti neovisni. U slučaju bilo kakvih poboljšanja ili promjena zahtjeva, to ne bi trebalo utjecati na slučajeve jediničnog testiranja.
- Testirajte samo jedan kôd odjednom.
- Slijedite jasne i dosljedne konvencije imenovanja za svoje jedinične testove
- U slučaju promjene koda u bilo kojem modulu, provjerite postoji li odgovarajuća jedinica Testni slučaj za modul, a modul prolazi testove prije promjene implementacije
- Greške identificirane tijekom testiranja jedinice moraju se popraviti prije prelaska na sljedeću fazu u SDLC-u
- Usvojite pristup "testirajte kao svoj kod". Što više koda napišete bez testiranja, to više putova morate provjeriti radi pogrešaka.
rezime
- JEDINIČNO TESTIRANJE definira se kao vrsta testiranja softvera gdje se testiraju pojedinačne jedinice ili komponente softvera.
- Kao što vidite, testiranje jedinica može biti puno uključeno. Može biti složeno ili prilično jednostavno, ovisno o aplikaciji koja se testira i korištenim strategijama testiranja, alatima i filozofijama. Jedinično testiranje uvijek je potrebno na nekoj razini. To je izvjesnost.