Ako ste ikada morali pronaći grešku u svom kodu, onda znate koliko to može biti frustrirajuće. Ova frustracija samo se povećava ako radite na velikoj bazi koda.

Testiranje vam omogućuje da provjerite odgovaraju li rezultati vašeg koda vašim očekivanjima. Na taj način možete jednostavno identificirati i riješiti problem prije implementacije svoje aplikacije. Osim što vam pomaže da brže uočite pogreške koda, testiranje vas također tjera da napišete dobar kod.

1. Statičko testiranje

Statičko testiranje odnosi se na testove koji se izvode bez izvršavanja koda. To se događa usporedbom koda s prethodno postavljenim pravilima kodiranja. Uobičajeni načini provođenja statičkog testiranja uključuju linting i provjeru tipa.

Linting uključuje provjeru programskih i stilskih pogrešaka koda. Linter analizira kod i označava potencijalne pogreške. Primjeri alata za linting su EsLint, PyLint i CSSLint.

Provjera tipa je proces nametanja pravila tipkanja i ograničenja vrijednosti. Neki programski jezici su strogo tipizirani, što znači da izbacuju pogreške kada vrijednosti nisu dobro tipizirane.

instagram viewer

Međutim, neki jezici poput JavaScripta imaju slab sustav tipkanja i više opraštaju. U tim je jezicima greške teško uhvatiti, a biblioteka za provjeru tipa je neophodna. Za JavaScript možete koristite TypeScript za nametanje snažnog tipkanja.

Također možete koristiti alate za statičku analizu za automatsku analizu koda. Ovi alati provjeravaju kvalitetu koda i izvješćuju o problemima koje pronađu. Primjeri alata za statičku analizu na tržištu su SonarQube, DeepSource i SpotBugs. Kada birate statički analizator, provjerite podržava li vaš programski jezik.

2. Jedinični testovi

Jedinični testovi provjeravaju najmanje dijelove aplikacije koji se mogu testirati kako bi se utvrdilo funkcioniraju li prema očekivanjima. Možete pisati jedinične testove za funkcije, module, objekte itd.

Iako jedinični testovi mogu biti dugotrajni, trebali bi uštedjeti više vremena nego što biste potrošili otklanjanje pogrešaka u aplikaciji nakon što ste napisali sav kod.

Općenito, jedinično testiranje sastoji se od četiri koraka:

  • Izrada testova
  • Pregledavanje testa
  • Postavljanje temelja
  • Izvođenje testa.

Jedinične testove možete pisati ručno ili ih automatizirati pomoću okvira za jedinično testiranje. U ručnom testu napisali biste kod za testiranje funkcije ili jedinice koja vam je potrebna, a zatim biste kasnije izbrisali kod za testiranje.

Ako koristite okvir, odredite jedinicu koju testirate i očekivane rezultate, a zatim pokrenite test. Okvir za testiranje tada bi zabilježio neuspjele i prolazne testove. Općenito je bolje koristiti okvir jer je brži.

Kada pišete jedinični test, provjerite je li jedinica koju testirate neovisna. Ako se oslanja na vanjske podatke kao što su varijable, možete koristiti lažne prikaze. Mocks zamjenjuju podatke koji nedostaju korišteni u jedinici.

Na primjer, ako testirate funkciju koja se oslanja na podaci dohvaćeni iz API-ja, možete stvoriti lažni podatkovni objekt u svrhu testiranja.

3. Integracijski testovi

Integracijski testovi provjeravaju kako različite komponente funkcioniraju zajedno. Ovo je za razliku od jediničnih testova koji testiraju neovisne komponente. Integracijske testove pišete nakon jediničnih testova.

Integracijski testovi su ključni jer osiguravaju da logika vaše aplikacije drži.

Na primjer, razmotrite dva modula: jedan koji dohvaća podatke iz API-ja i drugi koji ih analizira. Htjeli biste osigurati da vaš kod dohvaća točne podatke i ispravno ih analizira.

Ovdje dolazi integracijsko testiranje. Osigurava da nema grešaka u logičkom tijeku od jednog modula do drugog.

4. End-to-end testovi

End-to-end testiranje provjerava tijek aplikacije iz perspektive krajnjeg korisnika. Proces testira aplikaciju od početka do kraja, kako će korisnik koristiti aplikaciju. Ovi testovi pružaju veću pokrivenost od jediničnih testova ili integracijskih testova.

End-to-end testovi definiraju ovisnosti aplikacije, baze podataka i vanjsku komunikaciju. Oni repliciraju scenarij iz stvarnog svijeta što je točnije moguće.

Na primjer, prilikom testiranja obrasca za prijavu, end-to-end test testirat će različite scenarije kao što su:

  • Korisnik koji šalje i e-poštu i lozinku
  • Korisnik koristi slabu lozinku
  • Korisnik koristi nevažeću e-poštu
  • Korisnik koji šalje samo e-poštu
  • Korisnik koji šalje samo lozinku

End-to-end testovi osiguravaju da se aplikacija ponaša prema očekivanjima u ovim scenarijima.

Pisanje testova vs. Pisanje koda

Testiranje vaše aplikacije rano u procesu razvoja je od vitalnog značaja. Iako su svi ti testovi ključni, važno je pronaći ravnotežu koja vama odgovara. Inače ćete potrošiti previše vremena na pisanje testova umjesto koda.

Jedinično testiranje ključno je za većinu aplikacija i možda biste trebali posvetiti mu dovoljno vremena. Nakon što provedete jedinične testove, možete biti sigurni da sastavni dijelovi vaše aplikacije rade ispravno.