Š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.

  • 🎯 Svrha: Validirajte stvarno ponašanje tijekom izvođenja, a ne dokumente koji ga opisuju.
  • 🔀 Dvije grane: Bijela kutija ispituje kod, crna kutija ispituje ponašanje.
  • 🧱 Četiri razine: Jedinično, integracijsko, sistemsko i prihvatno testiranje izvršavaju kod.
  • Nefunkcionalno: Ovdje se izvode provjere performansi, oporavka, kompatibilnosti, sigurnosti i upotrebljivosti.
  • 🔄 Proces: Strategija, dizajn testiranja, postavljanje okruženja, izvršenje i prijavljivanje nedostataka.
  • 💰 Kompromis: Dublje otkrivanje nedostataka u zamjenu za vrijeme, okruženje i troškove.

Vrste, tehnike i primjer dinamičkog testiranja

Š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.

Dinamičko testiranje podijeljeno na bijelu i crnu kutiju s funkcionalnom i nefunkcionalnom razinom

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.

Tijek dinamičkog procesa testiranja od dizajna testa preko izvršenja do izvještavanja o greškama

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.

Pitanja i odgovori

Programeri su odgovorni za dio bijele kutije, provodeći provjere jedinica i komponenti. QA testeri su odgovorni za dio crne kutije, od testiranja sustava nadalje. Krajnji korisnici zatvaraju ciklus testiranjem prihvatljivosti.

Modeli čitaju zahtjeve i postojeće slučajeve, a zatim predlažu granične vrijednosti, nevažeće ulaze i nizove stanja koje ljudski zaostatak obično preskače. Tester i dalje potvrđuje svaki očekivani rezultat prije izvršenja.

Da. Skeletiranje tvrdnji, objekti stranica i postavljanje fiksatora su repetitivan kod kojim se asistent dobro nosi. Odlučivanje o tome što predstavlja ispravno ponašanje ostaje ljudska prosudba utemeljena na zahtjevima.

Okviri jedinica kao što su JUnit, TestNG i pytest, plus UI i API pokretači kao što su Selenium, Cypress i PostmanUčitajte alate kao što su JMeter pokriti nefunkcionalnu stranu automatizacija.

Izvješća bijele kutije o radu, pokrivenost grana i puta iz instrumentiranih prolaza. Zahtjevi izvješća crne kutije i pokrivenost uvjeta testiranja. Niti jedan broj sam po sebi ne dokazuje da je izrada adekvatno testirana.

Ne. Dinamičko testiranje opisuje izvršavanje koda, tko god ili što god ga pokreće. Skriptirani ručno run i automatizirani regresijski paket su dinamičko testiranje.

Da. Dinamičko testiranje sigurnosti aplikacija ispituje pokrenutu aplikaciju izvana, točno kao crnu kutiju. testiranje sigurnosti radi i prijavljuje ranjivosti koje se pojavljuju samo za vrijeme izvođenja.

To je okosnica jednog. Jedinice i API paketi zatvaraju svaki commit, dok dulje regresija i performanse se izvršavaju svake noći na implementiranoj verziji.

Sažmite ovu objavu uz: