Što je dinamičko testiranje? Vrste, tehnike i primjeri
⚡ Pametni sažetak
Dinamičko testiranje izvršava aplikaciju i promatra kako se izvršavajući kod ponaša sa stvarnim ulazima, tako da testeri mogu provjeriti funkcionalnost, performanse i stabilnost koju nikakva količina pregleda dokumentacije ne može otkriti.
Što je dinamičko testiranje?
Dinamičko testiranje je metoda testiranja softvera koja se koristi za testiranje dinamičkog ponašanja softverskog koda. Glavna svrha dinamičkog testiranja je ispitati ponašanje softvera s dinamičkim varijablama - varijablama koje nisu konstantne - i pronaći slaba područja u okruženju izvođenja softvera. Kod se mora izvršiti kako bi se testiralo dinamičko ponašanje.
Testiranje je verifikacija i validacija, a potrebna su oba V da bi testiranje bilo dovršeno. Verifikacija se provodi statičkim testiranjem, koje pregledava zahtjeve, dizajnersku dokumentaciju i kod bez njihovog pokretanja. Validacija se provodi dinamičkim testiranjem, koje pokreće izradu i uspoređuje što aplikacija zapravo radi s onim što bi trebala raditi.
Donja tablica na prvi pogled razlikuje ta dva.
| Aspekt | Statičko ispitivanje (verifikacija) | Dinamičko testiranje (validacija) |
| Code pogubljen | Ne | Da |
| Tipične aktivnosti | Revpregledi, obilasci, inspekcije, statička analiza | Izvršavanje testnih slučajeva na svim razinama testiranja |
| Odgovoreno na pitanje | Izrađujemo li proizvod ispravno? | Gradimo li pravi proizvod? |
| Pronađeni nedostaci | Dvosmisleni zahtjevi, kršenja standarda kodiranja, mrtvi kod | Pogrešan izlaz, curenje memorije, greške u vremenu, greške u integraciji |
| Pokreće | Čim artefakt postoji | Nakon što postoji izvršna verzija |
| Relativni trošak popravka | Niže, jer se nedostaci otkrivaju ranije | Više, jer se nedostaci pojavljuju kasnije |
Primjer dinamičkog testiranja
Kratki obrađeni primjer pokazuje kako se dinamičko testiranje ponaša u praksi.
Pretpostavimo da se testira stranica za prijavu. Ima dva polja, Korisničko ime i Lozinka, a Korisničko ime je ograničeno na alfanumeričke znakove.
Kada korisnik unese korisničko ime kao "Guru99”, sustav ga prihvaća. Kada korisnik unese „Guru99@123”, aplikacija izbacuje poruku o pogrešci. Ovaj rezultat pokazuje da se kod ponaša dinamički na temelju korisničkog unosa.
Dinamičko testiranje stoga znači rad sa stvarnim sustavom, davanje ulaznih podataka i uspoređivanje stvarnog ponašanja aplikacije s očekivanim ponašanjem - drugim riječima, rad sa sustavom s namjerom pronalaska pogrešaka.
Dinamičko testiranje je stoga proces validacije softverske aplikacije kao što bi to učinio krajnji korisnik, u različitim okruženjima, kako bi izgradio pravi softver.
Što radi dinamičko testiranje?
Glavni cilj dinamičkih testova je osigurati da softver ispravno radi tijekom i nakon instalacije, pružajući stabilnu aplikaciju bez većih nedostataka. Nijedan softver nije potpuno bez grešaka, a testiranje može pokazati prisutnost nedostataka, ali nikada njihovu odsutnost.
Dinamički testovi također osiguravaju konzistentnost u cijelom softveru, kao što pokazuje ovaj primjer.
U bankarskoj aplikaciji postoji nekoliko ekrana, kao što su Moji računi, Prijenos sredstava i Bill Plati. Svi sadrže polje za iznos.
Pretpostavimo da polje Moji računi prikazuje iznos od 25,000, da polje Prijenos sredstava prikazuje 25,000 USD, a Bill Na platnom ekranu se prikazuje 25 000 USD. Iznos je isti, ali način na koji je prikazan nije, što softver čini nekonzistentnim.
Konzistentnost nije ograničena samo na funkcionalnost. Ona također obuhvaća standarde poput performansi, upotrebljivosti i kompatibilnosti, zbog čega je dinamičko testiranje toliko važno.
Vrste dinamičkog ispitivanja
Dinamičko testiranje se klasificira u dvije kategorije.
- Bijela Box Ispitivanje
- Crna Box Ispitivanje
Donji dijagram prikazuje dvije kategorije u odnosu na razine testiranja koje se nalaze ispod njih.
Svaka vrsta i njezina namjena opisane su u nastavku.
Bijela Box Ispitivanje — metoda testiranja softvera u kojoj su testeru poznati unutarnja struktura i dizajn. Glavni cilj joj je provjeriti kako sustav funkcionira na temelju koda. Uglavnom je provode programeri ili testeri bijele kutije koji imaju znanje programiranja.
Crna Box Ispitivanje — metoda testiranja u kojoj testeru NISU poznati unutarnja struktura, kod i dizajn. Glavni mu je cilj provjeriti funkcionalnost testiranog sustava. Ova vrsta testiranja zahtijeva izvršavanje cijelog skupa testova, uglavnom je izvode testeri i ne zahtijeva znanje programiranja.
Testiranje crne kutije se opet klasificira u dvije vrste.
- Funkcionalno ispitivanje
- Nefunkcionalno testiranje
Funkcionalno ispitivanje
Ispitivanje funkcionalnosti provodi se kako bi se provjerilo da sve razvijene značajke odgovaraju funkcionalnim specifikacijama. Provodi se izvršavanjem funkcionalnog test slučajevi napisao QA tim. U ovoj fazi sustav se testira davanjem ulaznih podataka, provjerom izlaznih podataka i usporedbom stvarnih rezultata s očekivanim rezultatima.
Postoje različite razine funkcionalnog testiranja, od kojih su najvažnije četiri navedene u nastavku.
- Ispitivanje jedinice — jedinica je mali, testirani dio koda. Jedinično testiranje se provodi na pojedinačnoj jedinici softvera, a provode ga programeri.
- Ispitivanje integracije — izvodi se nakon jediničnog testiranja, kombiniranjem pojedinačnih testiranih jedinica. Izvode ga ili programeri ili testeri.
- Ispitivanje sustava — izvodi se kako bi se osiguralo da se sustav ponaša prema zahtjevima. Općenito se izvodi kada je cijeli sustav spreman, od strane testera, nakon što je verzija objavljena QA timu.
- Ispitivanje prihvatljivosti — provodi se kako bi se provjerilo je li sustav ispunio poslovne zahtjeve i je li spreman za upotrebu ili implementaciju. Općenito ga provode krajnji korisnici.
Nefunkcionalno testiranje
Nefunkcionalno testiranje je tehnika testiranja koja se ne fokusira na funkcionalne aspekte, već se koncentrira na nefunkcionalne atribute sustava, kao što su curenje memorije, performanse ili robusnost. Nefunkcionalno testiranje se provodi na svim razinama testiranja.
Postoji mnogo tehnika nefunkcionalnog testiranja, od kojih su najvažnije pet u nastavku.
- Ispitivanje performansi — provjerava je li vrijeme odziva sustava normalno, prema zahtjevima, pod željenim opterećenjem mreže.
- Testiranje oporavka — provjerava koliko se dobro sustav oporavlja od padova i kvarova hardvera.
- Ispitivanje kompatibilnosti — provjerava kako se sustav ponaša u različitim okruženjima.
- Ispitivanje sigurnosti — provjerava robusnost aplikacije, osiguravajući da samo ovlašteni korisnici i uloge mogu pristupiti sustavu.
- Ispitivanje upotrebljivosti — provjerava upotrebljivost sustava od strane krajnjih korisnika i koliko su ti korisnici zadovoljni njime.
Tehnike dinamičkog testiranja
Nakon što smo odredili tipove, sljedeće pitanje je kako se zapravo izvodi dinamički testni ciklus.
Tehnike dinamičkog testiranja u STLC sastoje se od zadataka kao što su analiza zahtjeva za testove, planiranje testiranja, dizajn i implementacija testnog slučaja, postavljanje testnog okruženja, izvršavanje testnog slučaja, prijavljivanje grešaka i konačno zatvaranje testa. Svaki zadatak u dinamičkom testiranju ovisi o dovršetku prethodnog zadatka u procesu testiranja.
Unutar STLC-a, stvarni proces dinamičkog testiranja započinje dizajnom testnog slučaja. Dijagram u nastavku prikazuje slijed aktivnosti, a svaka od njih je opisana nakon njega.
Prije ulaska u proces, potrebno je dogovoriti strategiju koja će se slijediti za dinamičko testiranje.
Strategija testiranja trebala bi se uglavnom usredotočiti na dostupne resurse i vremenski okvir. Na temelju ta dva čimbenika, cilj testiranja, opseg testiranja, faze ili ciklusi testiranja, vrsta okruženja, pretpostavke ili izazovi s kojima se može suočiti i rizici moraju se dokumentirati.
Nakon što je strategija definirana i prihvaćena od strane menadžmenta, započinje stvarni proces dizajniranja testnog slučaja.
Dizajn i implementacija testa
U ovoj fazi tim identificira sljedeće.
- Značajke koje treba testirati
- Uvjeti ispitivanja izvedeni iz tih značajki
- Stavke pokrivenosti izvedene iz uvjeta testiranja
- Testni slučajevi izvedeni iz stavki pokrivenosti
Crna kutija tehnike dizajna testova kao što su particioniranje ekvivalencije, analiza graničnih vrijednosti, testiranje tablice odluka i testiranje prijelaza stanja su ono što pretvara testni uvjet u konkretan skup izvršnih slučajeva.
Postavljanje testnog okruženja
The okruženje ispitivanja uvijek bi trebao biti sličan produkcijskom okruženju. U ovoj fazi se instalira izrada, a testna računala se upravljaju i konfiguriraju.
Izvođenje testa
Tijekom ove faze testni slučajevi se zapravo izvršavaju, ručno ili putem automatizacija, a stvarni rezultati se bilježe u odnosu na očekivane rezultate.
Izvješće o pogrešci snimljeno
Na temelju izvršenja, ako očekivani i stvarni rezultati nisu isti, testni slučaj mora biti označen kao Neuspješan i greška mora biti zabilježena u upravljanje nedostacima proces.
Prednosti dinamičkog testiranja
- Dinamičko testiranje otkriva nedostatke koji se smatraju previše teškim ili kompliciranim za uočavanje, a koje statička analiza uopće ne može pokriti.
- Softver se izvršava od početka do kraja, što podiže kvalitetu i proizvoda i projekta.
- Dinamičko testiranje je ključno sredstvo za otkrivanje sigurnosnih prijetnji u pokrenutom sustavu.
- Greške vezane samo za vrijeme izvođenja, poput curenja memorije, problema s vremenom i kvarova integracije, pojavljuju se ovdje i nigdje drugdje.
Nedostaci dinamičkog testiranja
- Dinamičko testiranje je dugotrajno, jer izvršavanje aplikacije ili koda zahtijeva veliku količinu resursa.
- To povećava trošak projekta jer ne počinje rano u životnom ciklusu softvera, a problemi ispravljeni u kasnijim fazama koštaju više za popravak.
- Okruženje slično produkcijskom i realistični testni podaci su preduvjeti, a za izgradnju i održavanje oba je potreban trud.


