Što je jedinstveno testiranje?
TESTIRANJE JEDINICA vrsta je testiranja softvera gdje se ispituju pojedinačne jedinice ili komponente softvera. Svrha je potvrditi da svaka jedinica softverskog koda radi prema očekivanjima. Jedinstveno testiranje provodi se tijekom razvoja (faze kodiranja) aplikacije od strane programera. Jedinstveni testovi izoliraju dio koda i provjeravaju njegovu ispravnost. Jedinica može biti pojedinačna funkcija, metoda, postupak, modul ili objekt.
U SDLC, STLC, V modelu, jedinično testiranje je prva razina testiranja koja se provodi prije integracijskog testiranja. Jedinstveno testiranje tehnika je WhiteBox testiranja koju obično izvodi programer. Iako, u praktičnom svijetu zbog vremenskog ograničenja ili nesklonosti programera za ispitivanja, QA inženjeri također vrše i jedinstvena testiranja.
U ovom vodiču naučit ćete-
- Zašto jedinstveno testiranje?
- Kako obaviti jedinstveno testiranje
- Tehnike jedinstvenog ispitivanja
- Alati za jedinstveno testiranje
- Test Driven Development (TDD) i jedinično testiranje
- Mit o jedinstvenom testiranju
- Jedinstvena prednost testiranja
- Nedostaci jediničnog ispitivanja
- Jedinstveno testiranje najboljih praksi
Zašto jedinstveno testiranje?
Jedinstveno testiranje važno je jer programeri ponekad pokušavaju uštedjeti vrijeme radeći minimalno jedinstveno testiranje, a to je mit jer neprimjereno jedinstveno testiranje dovodi do skupog popravljanja kvarova tijekom testiranja sustava, integracijskog testiranja, pa čak i beta testiranja nakon što aplikacija bude izgrađena. Ako se u ranom razvoju izvrši odgovarajuće jedinstveno testiranje, to na kraju štedi vrijeme i novac.
Evo ključnih razloga za provođenje jedinstvenog testiranja u softverskom inženjerstvu:
![](https://cdn.css-code.org/9963192/unit_testing_tutorial_what_is-_types-_tools_ampamp_test_example.png.webp)
- Jedinstveni testovi pomažu u ispravljanju programskih pogrešaka na početku razvojnog ciklusa i uštedi troškova.
- Pomaže programerima da razumiju bazu koda za testiranje i omogućuje im brzo unošenje promjena
- Dobra jedinična ispitivanja služe kao projektna dokumentacija
- Jedinstveni testovi pomažu u ponovnoj upotrebi koda. Premjestite i svoj kôd i testove u svoj novi projekt. Podesite kôd dok se testovi ne pokrenu ponovo.
Kako obaviti jedinstveno testiranje
Kako bi izvršili jedinstveno testiranje , programeri napišu odjeljak koda kako bi testirali određenu funkciju u softverskoj aplikaciji. Programeri također mogu izolirati ovu funkciju za rigoroznije testiranje, što otkriva nepotrebne ovisnosti između funkcije koja se testira i drugih jedinica, tako da se ovisnosti mogu eliminirati. Programeri obično koriste UnitTest framework za razvoj automatiziranih test slučajeva za unit testiranje.
Jedinstveno testiranje je dvije vrste
- Priručnik
- Automatizirano
Jedinstveno testiranje obično je automatizirano, ali se i dalje može provoditi ručno. Softversko inženjerstvo ne favorizira jedno nego drugo, ali daje prednost automatizaciji. Ručni pristup jedinstvenom testiranju može koristiti korak-po-korak instrukcijski dokument.
Pod automatiziranim pristupom
- Programer napiše odjeljak koda u aplikaciju samo da bi testirao funkciju. Kasnije će komentirati i konačno ukloniti testni kôd kada se aplikacija postavi.
- Programer bi također mogao izolirati funkciju kako bi je strože testirao. Ovo je temeljitija praksa jedinstvenog testiranja koja uključuje kopiranje i lijepljenje koda u vlastito testno okruženje od svog prirodnog okruženja. Izoliranje koda pomaže u otkrivanju nepotrebnih ovisnosti između koda koji se ispituje i drugih jedinica ili prostora podataka u proizvodu. Te se ovisnosti tada mogu eliminirati.
- Koder obično koristi UnitTest Framework za razvoj automatiziranih test slučajeva. Koristeći automatizacijski okvir, programer kodira kriterije u test kako bi provjerio ispravnost koda. Tijekom izvršavanja test slučajeva, framework bilježi neuspjeh test slučajeva. Mnogi će okviri također automatski označiti i prijaviti, ukratko, ove neuspjele ispitne slučajeve. Ovisno o ozbiljnosti kvara, okvir može zaustaviti naknadno testiranje.
- Tijek jedinstvenog testiranja je 1) Stvaranje testnih slučajeva 2) Pregled / prerada 3) Polazna osnova 4) Izvršavanje testnih slučajeva.
Tehnike jedinstvenog ispitivanja
Na testiranje tehnike uglavnom su kategorizirani u tri dijela koja su crna kutija testiranje koje uključuje testiranje korisničkog sučelja uz ulaz i izlaz, bijeli okvir ispitivanja koji uključuje testiranje funkcionalnog ponašanja softverske aplikacije i sivi okvir ispitivanja koja se koristi za izvršavanje testa apartmani, metode ispitivanja, test slučajevi i provođenje analize rizika.
Tehnike pokrivanja kodova korištene u jedinstvenom testiranju navedene su u nastavku:
- Obuhvat izvještaja
- Pokrivenost odlukom
- Pokrivenost podružnice
- Stanje Pokrivenost
- Pokrivenost konačnog državnog stroja
Za više informacija pogledajte https://www.guru99.com/code-coverage.html
Primjer jediničnog testa: ismijani objekti
Jedinstveno testiranje oslanja se na lažne objekte koji se stvaraju za testiranje odjeljaka koda koji još nisu dio cjelovite aplikacije. Lažni objekti popunjavaju dijelove programa koji nedostaju.
Na primjer, možda imate funkciju koja treba varijable ili objekte koji još nisu stvoreni. Pri jediničnom testiranju oni će se računati u obliku lažnih predmeta stvorenih isključivo u svrhu jedinstvenog testiranja provedenog na tom dijelu koda.
Alati za jedinstveno testiranje
Dostupno je nekoliko softvera za automatizirano jedinstveno testiranje koji pomažu u jedinstvenom testiranju. U nastavku ćemo dati nekoliko primjera:
- Junit: Junit je besplatni alat za testiranje koji se koristi za programski jezik Java. Daje tvrdnje za identificiranje metode ispitivanja. Ovaj alat prvo testira podatke, a zatim ih ubacuje u dio koda.
- NUnit: NUnit je široko korištena jedinica za testiranje jedinica koja se koristi za sve .net jezike. To je alat otvorenog koda koji omogućuje ručno pisanje skripti. Podržava testove vođene podacima koji se mogu izvoditi paralelno.
- JMockit: JMockit je alat za testiranje jedinica otvorenog koda. To je alat za pokrivanje koda s metrikom linija i putanja. Omogućuje ismijavanje API-ja sintaksom snimanja i provjere. Ovaj alat nudi pokrivanje linije, pokrivenost puta i pokrivanje podataka.
- EMMA: EMMA je paket alata otvorenog koda za analizu i izvještavanje koda napisanog na jeziku Java. Emma podržava vrste pokrivenosti poput metode, linije, osnovnog bloka. Zasnovan je na Javi, tako da nema ovisnosti o vanjskim knjižnicama i može pristupiti izvornom kodu.
- PHPUnit: PHPUnit je alat za jedinstveno testiranje za PHP programera. Potrebni su mali dijelovi koda koji se nazivaju jedinice i testirajte svaku od njih zasebno. Alat također omogućuje programerima da koriste unaprijed definirane metode tvrdnji kako bi tvrdili da se sustav ponaša na određeni način.
To je samo nekoliko dostupnih alata za jedinstveno testiranje. Postoji mnogo više, posebno za jezike C i Javu, ali zasigurno ćete pronaći alat za jedinstveno testiranje za svoje potrebe programiranja, bez obzira na jezik koji koristite.
Test Driven Development (TDD) i jedinično testiranje
Jedinstveno testiranje u TDD-u uključuje široku upotrebu okvira za testiranje. Jedinstveni testni okvir koristi se za stvaranje automatiziranih jediničnih testova. Okviri jediničnog testiranja nisu jedinstveni za TDD, ali su mu od ključne važnosti. U nastavku ćemo pogledati neke od onoga što TDD donosi u svijet jediničnog testiranja:
- Ispitivanja su napisana prije koda
- Veoma uporno na okvirima za testiranje
- Sve klase u aplikacijama su testirane
- Omogućena je brza i laka integracija
Mit o jedinstvenom testiranju
Mit: Potrebno je vrijeme, a ja sam uvijek previše raspoređen. Moj kod je čvrst! Ne trebaju mi jedinični testovi.
Mitovi su po svojoj prirodi lažne pretpostavke. Te pretpostavke vode u začarani krug kako slijedi -
Istina je da jedinstveno testiranje povećava brzinu razvoja.
Programeri misle da će integracijsko testiranje uhvatiti sve pogreške i neće izvršiti jedinstveni test. Jednom kad se jedinice integriraju, vrlo jednostavnim greškama koje bi se mogle vrlo lako pronaći i popraviti u testiranim jedinicama treba jako puno vremena da se pronađu i poprave.
Jedinstvena prednost testiranja
- Programeri koji žele naučiti koju funkcionalnost pruža jedinica i kako je koristiti mogu pogledati jedinične testove kako bi stekli osnovno razumijevanje API-ja jedinice.
- Jedinstveno testiranje omogućava programeru da kasnije izvrši refaktoriranje koda i osigura da modul i dalje radi ispravno (tj. Regresijsko testiranje). Postupak je pisanje testnih slučajeva za sve funkcije i metode, tako da kad god promjena izazove kvar, može se brzo prepoznati i popraviti.
- Zbog modularne prirode jedinstvenog testiranja, dijelove projekta možemo testirati ne čekajući da drugi budu dovršeni.
Nedostaci jediničnog ispitivanja
- Ne može se očekivati da će jedinično testiranje uhvatiti svaku pogrešku u programu. Nije moguće procijeniti sve putove izvršenja ni u naj trivijalnijim programima
- Jedinično testiranje po svojoj prirodi usredotočuje se na jedinicu koda. Stoga ne može uhvatiti pogreške integracije ili široke pogreške na razini sustava.
Preporučuje se jedinstveno testiranje koristiti zajedno s drugim aktivnostima ispitivanja.
Jedinstveno testiranje najboljih praksi
- Slučajevi jedinstvenih testova trebaju biti neovisni. U slučaju bilo kakvih poboljšanja ili promjene zahtjeva, to ne bi trebalo utjecati na jedinice jedinice ispitivanja.
- Testirajte samo po jedan kod.
- Slijedite jasne i dosljedne konvencije imenovanja za svoje jedinične testove
- U slučaju promjene koda u bilo kojem modulu, osigurajte da postoji odgovarajući testni slučaj jedinice za modul, a modul prolazi testove prije promjene implementacije
- Greške identificirane tijekom jediničnog testiranja moraju se ispraviti prije nego što se prijeđe na sljedeću fazu u SDLC-u
- Usvojite pristup "test kao vaš kôd". Što više koda napišete bez testiranja, više putova morate provjeriti ima li pogrešaka.
![unit_testing_best_practise.](https://cdn.css-code.org/9963192/unit_testing_tutorial_what_is-_types-_tools_ampamp_test_example_3.png.webp)
Sažetak
- TESTIRANJE JEDINICA definirano je kao vrsta testiranja softvera gdje se ispituju pojedinačne jedinice ili komponente softvera.
- Kao što vidite, u jedinično testiranje 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 filozofiji. Jedinstveno testiranje uvijek je potrebno na nekoj razini. To je sigurno.