U testiranju softvera, verifikacija i validacija predstavljaju ključne procese kojima se utvrđuje da li softverski sistem ispunjava svoju svrhu i zadovoljava specificirane zahteve.
Ova dva koncepta, koja se često smatraju sinonimima za kontrolu kvaliteta softvera, koriste stručnjaci za testiranje tokom čitavog životnog ciklusa razvoja softvera. Iako na prvi pogled mogu delovati slično, njihova analiza i primena su suštinski različiti.
Verifikacija je proces kojim se ocenjuje kvalitet samog softvera, dok validacija proverava da li funkcionalnost softvera zadovoljava potrebe korisnika. Validacija se obično sprovodi nakon završetka verifikacije, na kraju razvojnog ciklusa.
U svetu testiranja aplikacija, postoji značajna konfuzija oko ovih termina. Stoga, ako ste uključeni u testiranje softvera ili vas samo zanima ova oblast, važno je da razumete razlike između ova dva koncepta.
U ovom tekstu ćemo detaljno analizirati verifikaciju i validaciju, njihove prednosti, i druge aspekte. Takođe, kroz tabelarni prikaz ćemo istaći ključne razlike između ova dva termina.
Započnimo!
Šta je verifikacija?
Verifikacija je proces provere softvera tokom samog procesa razvoja. Uključuje sastanke, inspekcije, preglede i druge aktivnosti s ciljem procene planova, koda, dokumentacije, specifikacija i zahteva.
U tehničkom smislu, verifikacija se definiše kao proces koji procenjuje da li aplikacija ispunjava postavljene zahteve i može li zadovoljiti potrebe krajnjih korisnika.
Osnovni cilj verifikacije je osiguranje kvaliteta softverske aplikacije, njene arhitekture, dizajna i drugih ključnih elemenata. U procesu verifikacije, specifikacije služe kao ulazni podaci za razvoj aplikacije. Kod se piše na osnovu dokumenata koji detaljno opisuju te specifikacije.
Stručnjaci za testiranje softvera koriste različite metode verifikacije, u zavisnosti od složenosti i obima same aplikacije. Ponekad se koriste matematički modeli i izvedene kalkulacije za predviđanje ponašanja softvera i verifikaciju logike koda.
Verifikacija proverava da li razvojni tim gradi proizvod na ispravan način. Drugim rečima, verifikacija je proces koji prethodi validaciji i traje sve dok softver ne bude spreman za objavljivanje.
Proces verifikacije obuhvata tri ključne faze:
- Verifikacija zahteva: To je proces kojim se proverava da li su zahtevi potpuni, tačni i precizni. Pre nego što se pređe na dizajn aplikacije, test tim proverava potrebe korisnika ili poslovne zahteve kako bi osigurao njihovu kompletnost i ispravnost.
- Verifikacija dizajna: Ovde se proverava da li softverska aplikacija ispunjava specifikacije dizajna navedene u dokumentaciji. Test tim proverava prototipove, rasporede, arhitektonski dizajn, logičke modele baza podataka i navigacione mape aplikacije kako bi se osiguralo da su ispunjeni funkcionalni i nefunkcionalni zahtevi.
- Verifikacija koda: To je proces provere ispravnosti, doslednosti i potpunosti koda. U ovoj fazi, test tim proverava da li artefakti izgradnje, uključujući korisničke interfejse, izvorni kod i fizičke modele baze podataka, zadovoljavaju specifikacije dizajna.
Da bismo bolje razumeli ovaj koncept, razmotrimo primer iz stvarnog života.
Kada angažujete dizajnera enterijera za svoj dom, prvo mu iznosite svoje zahteve. Na osnovu tih zahteva, dizajnerski tim pravi model koji prikazuje kako će prostor izgledati. Taj isti tim testira izvodljivost dizajna i vrši izmene u skladu sa zahtevima i povratnim informacijama, kako bi se finalizirao dizajn koji ispunjava očekivanja vlasnika.
U ovom primeru, model kuće je kod, timovi za dizajn enterijera su programeri i testeri, a vlasnik kuće je krajnji kupac.
Šta je validacija?
Validacija je proces koji se koristi za procenu softvera u skladu sa poslovnim ili korisničkim zahtevima, bilo tokom razvoja softvera ili po njegovom završetku. Cilj je evaluacija gotove aplikacije kako bi se utvrdilo da li zadovoljava očekivanja i potrebe kupaca.
Validacija je dinamičan mehanizam za proveru stvarnog projekta, koji uključuje i testiranje. Fokus validacije je na izlaznim rezultatima, i ne bavi se internim procesima. Ona se sprovodi tek nakon završetka procesa verifikacije.
Timovi za razvoj softvera koriste različite metode validacije, kao što su testiranje crne kutije (funkcionalno testiranje) i testiranje bele kutije (nefunkcionalno testiranje, ili testiranje dizajna/arhitekture).
- Testiranje bele kutije pomaže pri validaciji aplikacije kroz definisane nizove ulaznih podataka. Testeri porede izlazne vrednosti aplikacije sa ulaznim vrednostima kako bi proverili da li softver daje očekivani rezultat.
- U testiranju crne kutije, postoje tri ključne promenljive: ulazne vrednosti, očekivane izlazne vrednosti i ostvarene izlazne vrednosti.
Ukratko, funkcionalno testiranje (crna kutija) uključuje integraciono testiranje, sistemsko testiranje i testiranje jedinica, dok nefunkcionalno testiranje (bela kutija) uključuje testiranje prihvatanja od strane korisnika.
Validacija potvrđuje da je softverski proizvod pravilno razvijen, kroz proveru usklađenosti sa specifikacijama korisnika.
Proces validacije obuhvata sledeće korake:
- Pregled dizajna: Test tim analizira zahteve kupaca. Zatim se kreira plan testiranja za validaciju svake stavke softvera pre prelaska u proizvodnju. Razvojni timovi dobijaju odobrenje o spremnosti proizvoda.
- Pregled instalacije: Test tim instalira softver prema planu testiranja, osiguravajući da su proces instalacije i osnovni sistemski hardver u skladu sa specifikacijama. Takođe, proveravaju i funkcionalnost softvera.
- Operativni pregled: Testeri prolaze kroz različite scenarije testiranja kako bi osigurali kompletnost aplikacije. Cilj je provera svih operacija i funkcionalnosti, i utvrđivanje da li softver radi kako je kupac zahtevao.
- Pregled performansi: Pokazuje da li softverska aplikacija funkcioniše u skladu sa poslovnim potrebama u realnim uslovima. Klijenti mogu sprovesti beta testiranje kako bi se uverili da li je proizvod ispravno razvijen. Spoljni pregled može otkriti nedostatke i greške koje je razvojni tim propustio.
- Pregled spremnosti za proizvodnju: Nakon svih pregleda, proces validacije je završen i proizvod se smatra spremnim za proizvodnju. To znači da tim može započeti objavljivanje aplikacije u produkciono okruženje.
Ako se nakon objavljivanja otkriju nedostaci, razvojni tim objavljuje nove ispravke kako bi rešio te probleme.
Vratimo se na prethodni primer i razumimo šta je validacija.
Za tim koji radi na projektu dizajniranja enterijera, verifikacija pomaže u finalizaciji kompletnog unutrašnjeg uređenja doma. Validacija je sledeći korak, koji se vrši kroz osećaj i analizu dizajna. Validacija se odvija kada uvidite da je vaša kuća ista kao što je prikazano u dizajnu.
Drugi primer je želja da probate palačinke iz određenog kafića. Da biste potvrdili da je palačinka zaista ona koju ste naručili, morate je probati.
Verifikacija naspram validacije: Prednosti
Prednosti verifikacije
Razmotrimo neke prednosti verifikacionog testiranja:
- Česta i rana verifikacija smanjuje rizik od grešaka i pomaže u smanjenju nedostataka i problema koji se mogu pojaviti kasnije.
- Svi uključeni, od menadžera proizvoda do programera, dobijaju više uvida u softversku aplikaciju kroz verifikaciju koda u svakoj fazi, što im omogućava da predvide ponašanje softvera u kasnijim fazama.
- Verifikacija softvera pomaže u usklađivanju softvera sa poslovnim zahtevima i potrebama kupaca u svakoj fazi razvoja, što pomaže programerima da ulože manje nepotrebnog rada.
- Pošto se sve greške ne mogu u potpunosti eliminisati, verifikacija pomaže timovima za kontrolu kvaliteta da procene moguće probleme u budućnosti, kako bi bili spremni da brzo reše probleme.
- Smanjuje troškove ponovnog štampanja i slanja dokumentacije.
- U verifikaciji je manja šansa za kvar sistema nakon faze razvoja.
Prednosti validacije
Svi testovi validacije sprovode se kako bi se osiguralo da sistem funkcioniše kako se očekuje, kroz pokretanje njegovih funkcija i praćenje rezultata.
Razmotrimo prednosti validacije u testiranju softvera:
- Svi propusti ili greške koji su se pojavili tokom verifikacije, lako se mogu otkriti tokom validacionih testova.
- Ukoliko specifikacije nisu adekvatne ili su netačne od samog početka, validacija otkriva njihovu neefikasnost, što sprečava pojavu loše softverske aplikacije na tržištu.
- Validacioni testovi potvrđuju da softverska aplikacija odgovara poslovnim ili korisničkim zahtevima u različitim uslovima, kao što su slaba baterija, spora internet konekcija i drugo.
- Ovi testovi omogućavaju softveru da funkcioniše u različitim kombinacijama pretraživača, uređaja i operativnih sistema. Tako validacija potvrđuje kompatibilnost softvera sa različitim pretraživačima.
- Validacija pomaže u poboljšanju pouzdanosti softverske aplikacije.
Verifikacija naspram validacije: kada ih koristiti?
Kada koristiti verifikaciono testiranje?
Testovi verifikacije se pokreću u svakoj fazi razvojnog ciklusa, pre primene bilo koje funkcije.
Na primer, razmotrimo dodavanje dugmeta sa oznakom „Dodaj na listu želja“ na web lokaciju. Pre kreiranja dugmeta, verifikacioni testovi razmatraju zahteve definisane u fazama planiranja.
Pretpostavimo da dokumentacija navodi da dugme mora biti plave boje, sa slovima ispisanih u magenta boji i da ne sme biti veće od 15mm x 10mm. Takođe, dugme treba da bude stalno vidljivo ispod sredine svake stranice proizvoda na sajtu.
Ispod svakog proizvoda na stranici treba postaviti još jedno dugme iste funkcije. Pre početka rada, potrebno je pregledati zahteve i tabele dizajna i navesti sve potrebne specifikacije.
Ukratko, verifikaciono testiranje se koristi pre i tokom celog razvojnog ciklusa softverske aplikacije.
Kada koristiti validaciono testiranje?
Proces validacije se pokreće nakon završetka svakog koraka ili funkcije u razvojnom ciklusu. Na primer, testovi jedinica se pokreću nakon kreiranja svake jedinice koda. Slično tome, integracioni testovi se pokreću nakon što su različiti moduli završeni i spremni za kombinovanje.
Testiranje u više pregledača, kao oblik validacije, važan je element validacije. Timovi za kontrolu kvaliteta moraju proveriti da li se svaka funkcija, element dizajna i opcija pojavljuju kako se očekuje u različitim kombinacijama pretraživača, uređaja i operativnog sistema. Na primer, moraju proveriti da li se dugme „Dodaj u korpu“ pojavljuje u svakom pregledaču i da li ispravno funkcioniše.
Testeri softvera rade na proizvodu kako bi osigurali da je izlaz softvera ispravan, koristeći metode validacije kao što su testiranje bele kutije (koje proverava interni kod aplikacije) i testiranje crne kutije (koje proverava samo spoljne funkcije aplikacije).
Sada ćemo detaljnije analizirati glavne razlike između verifikacije i validacije.
Verifikacija naspram validacije u testiranju softvera: razlike
Verifikacija: Da li razvijamo proizvod na ispravan način?
Validacija: Da li razvijamo ispravan proizvod koji ispunjava zahteve kupaca?
Verifikacija i validacija su sastavni delovi razvoja softvera. Bez njih, tim za razvoj softvera ne može kreirati kvalitetan proizvod. Ovi procesi pomažu u smanjenju rizika od neuspeha proizvoda i poboljšavaju pouzdanost softverske aplikacije.
Oba procesa se različito primenjuju u firmama za razvoj softvera. Na primer, u metodologiji agilnog razvoja se koriste istovremeno, zbog potrebe za njima u kontinuiranim poslovnim procesima.
U tabeli ispod su prikazane ključne razlike između verifikacije i validacije:
Verifikacija | Validacija |
U verifikacionom testiranju, aktivnosti su verifikacija zahteva, verifikacija koda i verifikacija dizajna. | Validaciono testiranje uključuje sistemsko testiranje, testiranje funkcionalnosti, testiranje bezbednosti, testiranje performansi, testiranje upotrebljivosti itd. |
Ne uključuje izvršavanje koda. | Uključuje izvršavanje koda radi testiranja funkcionalnosti i upotrebljivosti softvera. |
Tokom verifikacionog testiranja, treba da odgovorite na pitanje: „Da li razvijamo pravi proizvod?“ | Tokom validacionog testiranja, treba da odgovorite na pitanje: „Da li je razvijeni proizvod ispravan i da li ispunjava zahteve kupaca?“ |
To je statička praksa pregleda dizajna, koda, dokumentacije i programa. | To je dinamički mehanizam testiranja i validacije stvarnog proizvoda. |
To je provera datoteka i dokumenata zasnovana na ljudima. | To je izvršavanje programa zasnovano na računarima. |
Verifikacija je aktivnost niskog nivoa, koja prethodi validaciji. | Validacija je aktivnost visokog nivoa koja otkriva greške propuštene tokom verifikacije. |
Cilj su arhitektura softvera ili aplikacije, specifikacije zahteva, kompletan dizajn, dizajn baze podataka i dizajn na visokom nivou. | Cilj je stvarni proizvod, uključujući jedinicu, modul, efektivni finalni proizvod i kombinovane module. |
Vrši je tim za osiguranje kvaliteta, kako bi se proverilo da li je softver napravljen u skladu sa specifikacijama dizajna navedenim u dokumentaciji. | Validacija se sprovodi nakon završetka faze verifikacije, i uključuje tim za testiranje. |
Inspekcije, pregledi, provere i simulacije su metode koje se koriste u verifikaciji. | Testiranje crne kutije i testiranje bele kutije su metode koje se koriste u validaciji. |
Smanjuje propuste i greške u ranoj fazi. | Otkriva propuste i greške u fazi verifikacije. |
Ovo testiranje pomaže da se predvidi da li ulazi prate izlaze. | Ovo testiranje pomaže da se predvidi da li će korisnici prihvatiti finalni proizvod. |
Verifikacija i validacija (V&V) u različitim fazama ciklusa razvoja softvera
Verifikacija i validacija se sprovode u svakoj fazi procesa razvoja. Razmotrimo ih po fazama:
- Faza planiranja uključuje verifikaciju ugovora, evaluaciju koncept dokumenta i analizu rizika.
- Faza zahteva uključuje procenu softverskih zahteva i interfejsa, kao i izradu plana prihvatanja i testiranja sistema.
- Faza projektovanja uključuje procenu dizajna softvera i interfejsa, generisanje plana integracije, dizajna testa i plana testiranja komponenti.
- Faza implementacije uključuje evaluaciju izvornog koda i dokumentacije, generisanje test slučajeva i procedura, kao i izvršavanje test slučajeva komponenti.
- Faza testiranja uključuje izvršavanje sistema i test slučajeva prihvatanja, ažuriranje metrike sledljivosti i analizu rizika.
- Faza instalacije i verifikacije uključuje reviziju konfiguracije i instalacije, završno testiranje instalacije i generisanje završnog izveštaja o testiranju.
- Operativna faza uključuje procenu novih ograničenja i procenu predložene promene.
- Faza održavanja uključuje procenu anomalija, procenu karakteristika migracije i ponovnog testiranja, predložene izmene i validaciju proizvodnih problema.
Zaključak
Procesi verifikacije i validacije su ključni aspekti razvoja softvera. Ovi procesi pomažu u utvrđivanju da li je softverska aplikacija kreirana u skladu sa definisanim zahtevima, da li ispunjava poslovne potrebe i zahteve korisnika.
Iako oba procesa mogu delovati slično, oni se razlikuju u načinu implementacije tokom životnog ciklusa razvoja softvera.
Preporučujemo vam da istražite i najbolje alate za razvoj i testiranje API-ja.