Testiranje softvera predstavlja postupak uočavanja grešaka, nedostataka, propusta, bugova i kvarova koji se manifestuju kao odstupanje između očekivanih i stvarnih rezultata.
Bez obzira da li svoj softver testirate ručno ili putem automatizovanih procedura, ovi termini se pojavljuju kada otkrijete probleme u svom kodu.
Identifikovanjem nedostataka, propuštenih zahteva ili grešaka u softveru, osiguravate da vaš softver bude besprekoran i visokog kvaliteta za korisnike.
Na taj način brinete o boljem korisničkom iskustvu, jer korisnici mogu lako koristiti softver bez ikakvih problema i pogoršanja performansi ili funkcionalnosti.
U ovom članku ću objasniti šta su bugovi, nedostaci, greške, kvarovi i propusti, kao i razlike između ovih pojmova na osnovu njihovih definicija, tipova, primera, uzroka, fokusa i drugih parametara.
Započnimo!
Šta je bug?
Bug je široko rasprostranjen izraz u razvoju softvera. Međutim, nije poželjan. Opisuje se kao problem ili greška koja može da izazove da se softver ponaša na način koji korisnik ne očekuje ili koji programer nije zamislio.
Bugovi imaju širok spektar uticaja na performanse softvera, od manjih problema koji se lako mogu rešiti do ozbiljnih koji mogu da onemoguće upotrebu vaše aplikacije. Ali, u oba slučaja, bugove je neophodno odmah rešiti i ispraviti kako bi se korisnicima pružilo kvalitetno iskustvo i izgradilo poverenje.
Veliki bugovi se generalno tretiraju kao prioritetni i hitni, posebno kada postoji rizik od nezadovoljstva korisnika. Postoji mnogo vrsta bugova koji mogu uticati na funkcionalnost i performanse, ali najčešći tip buga je rušenje. To znači da softver prestaje da radi onako kako su korisnici očekivali i automatski se gasi tokom upotrebe.
Na primer, kada korisnik piše izveštaj ili članak u softveru za obradu teksta, i on se iznenada sruši, korisnik će izgubiti sav posao ako prethodno nije pritisnuo dugme za čuvanje. Ovo će negativno uticati na produktivnost korisnika.
Tipografske greške su takođe bugovi koji izgledaju kao manji problemi, ali mogu da stvore katastrofalne rezultate. Čak i netačan broj ili pogrešno postavljeno slovo mogu izazvati drastičnu promenu predviđenih funkcija programa.
Pored toga, softverski bug remeti sposobnost organizacije da komunicira sa korisnicima, generiše potencijalne klijente, olakša kupovinu i još mnogo toga. Stoga se mora iskoreniti što je pre moguće.
Šta je defekt?
Defekt u testiranju softvera se odnosi na odstupanje ili varijaciju softvera od korisničkih ili poslovnih zahteva. To je problem u kodiranju aplikacije koji može uticati na ceo program. Timovi za testiranje, tokom izvođenja različitih test slučajeva, nailaze na defekte.
Defekti proizvoda predstavljaju neefikasnost i nesposobnost aplikacije da ispuni kriterijume i sprečava softver da izvrši željeni zadatak. Ovo se dešava tokom ciklusa razvoja softvera od strane programera. Defekt može nastati kada programer ili koder napravi neku manju ili veću grešku tokom faze razvoja.
Dakle, bugovi i defekti imaju vrlo male razlike. U softverskoj industriji, oba se smatraju greškama koje treba ispraviti neposredno pre implementacije. Postoji mnogo vrsta defekata na koje možete naići tokom ciklusa razvoja softvera. Oni su sledeći:
Aritmetički defekt
Aritmetički defekt obuhvata nedostatke u aritmetičkom izrazu ili pronalaženju rešenja nekog aritmetičkog izraza u programu. Ove greške uglavnom izazivaju programeri koji rade na softveru zbog manjeg znanja ili preopterećenosti poslom. Zagušenje koda je takođe razlog za aritmetičke greške, kada programeri nisu u mogućnosti da pravilno pregledaju kod.
Sintaksni defekti
Sintaksni defekti su uobičajene vrste grešaka koje se prave prilikom pisanja koda. Pokazuje čak i najmanju grešku u sintaksi. Ovo se dešava kada programer ili koder greškom izostavi simbol u programu, kao što je tačka i zarez (;), dok piše kod u C++.
Logički defekti
Logički defekti se pojavljuju tokom implementacije koda. Kada programer pogrešno razmišlja o rešenju ili ne razume jasno zahtev, ovi defekti se dešavaju. Takođe se dešava kada programer zaboravi na granične slučajeve. Povezan je sa suštinom aplikacije.
Defekti u performansama
Kada softverska aplikacija ili sistem ne mogu da postignu očekivane rezultate, to se naziva defektom u performansama. Uključuje reakciju aplikacije tokom upotrebe sa različitim opterećenjima.
Multithreading defekti
Multithreading defekti se dešavaju kada se izvršava ili pokreće više zadataka u isto vreme. Ovo može dovesti do složenih situacija za otklanjanje grešaka. Tokom multithreading procesa, postoji mogućnost da dođe do zastoja i izgladnjivanja, što rezultira kvarom sistema.
Defekti interfejsa
Defekti interfejsa su defekti koji se javljaju tokom interakcije korisnika i softvera. Uključuje komplikovane interfejse, interfejse zasnovane na platformi ili nejasne interfejse. Ovi defekti sprečavaju korisnike da bez napora koriste softver.
Šta je greška?
Greška je pogrešno shvatanje, nesporazum ili greška od strane programera aplikacije. Programer ili koder ponekad može pogrešno da razume oznaku znaka ili može da otkuca pogrešnu reč, što rezultira greškom u programskom kodu.
Generiše se zbog pogrešne logike, sintakse ili petlje koja može značajno uticati na iskustvo krajnjeg korisnika. U osnovi, greška se izračunava poređenjem između očekivanih i stvarnih rezultata. Unutar programa, kada dođe do takvog scenarija, on menja funkcionalnost aplikacije, što dovodi do nezadovoljstva korisnika.
Greška se javlja iz nekoliko razloga, ali dovodi do problema u kodu aplikacije. To mogu biti problemi sa dizajnom, problemi u kodiranju ili problemi sa specifikacijama sistema. Malo se razlikuje od defekata.
Funkcionalnost je glavni kriterijum softvera, ali ponekad softver dovodi do grešaka u funkcionalnosti kada je nešto nezgodno, nemoguće, zbunjujuće ili teško. Vrste grešaka su:
- Do grešaka u komunikaciji može doći tokom komunikacije od aplikacije do korisnika. Na primer, nema menija u softveru, nema uputstva za pomoć, nema dugmeta za čuvanje itd.
- Greška u komandi koja nedostaje je još jedna uobičajena greška među programerima zbog spore brzine kucanja, kratkih rokova ili više. Izlaz programa odstupa ako neke komande nedostaju.
- Gramatičke netačne rečenice i pogrešno napisane reči su uobičajene greške koje se nalaze u svakom kodu aplikacije. Kada se greška obradi na smislen i transparentan način, može se smanjiti tokom testiranja.
- Greške u proračunu nastaju zbog grešaka u kodiranju, loše logike, netačnih formula, problema sa pozivom funkcije, nepodudaranja tipova podataka i još mnogo toga.
Šta je neuspeh?
Ponekad tokom izvršavanja programa, sistem će proizvesti neočekivane rezultate koji mogu dovesti do otkazivanja aplikacije. U određenim situacijama ili okruženjima, defekti mogu biti razlog za neuspeh, a ponekad razlozi mogu biti različiti.
Ne dovodi svaki defekt do neuspeha. Na primer, defekti u mrtvom kodu neće dovesti do grešaka. Takođe može biti uzrokovano i iz drugih razloga. Štaviše, mnogo puta uslovi okoline, uključujući jako magnetno polje, zagađenje, elektronska polja, zračenje, itd., mogu uzrokovati kvar u firmveru ili hardveru.
Do neuspeha može doći i zbog ljudskih grešaka tokom interakcije sa softverom. Na primer, može doći do neuspeha softvera ako čovek unese pogrešnu ulaznu vrednost. Međutim, individua može namerno izazvati i neuspeh u sistemu.
Kada je reč o neuspesima u softveru, postoji nekoliko tačaka koje je neophodno da razumete:
- Tokom testiranja softvera, ako tester nije siguran da li je data situacija greška ili ne, to se može nazvati incidentom. Incident tada zahteva dalje testiranje kako bi se potvrdilo da li je defekt uzrok neuspeha ili neki drugi razlozi kao što su nevažeći unos, nepovoljno okruženje i nedostatak znanja o njegovoj funkcionalnosti.
Ovi incidenti se prijavljuju i šalju programerima kako bi mogli da analiziraju incident radi potvrđivanja razloga neuspeha.
- Neuspeh je termin koji dolazi nakon faze proizvodnje softvera. Da bi se procenio kvalitet softvera, potrebno ga je pravilno proveriti pre implementacije, jer je kvalitet od najveće važnosti u povećanju poverenja korisnika, što rezultira poboljšanim poslovanjem.
Međutim, greška se može identifikovati samo u aplikaciji kada je neispravni deo izvršen. Ako defektni delovi uopšte nisu izvedeni, taj deo ne može prouzrokovati neuspeh.
Šta je propust?
Propust je nenamerno ili nepravilno ponašanje aplikacijskog programa. To izaziva upozorenje u programu. Ako se ne leči, može dovesti do neuspeha u radu implementiranog koda. Ako se različite komponente koda aplikacije oslanjaju jedna na drugu, propust je ona koja može uzrokovati probleme u više komponenti.
Manji propust može rezultirati velikim neuspehom. Propust se može sprečiti usvajanjem tehnika programiranja, razvojnih metodologija, recenzija od strane kolega i analizom koda.
Evo različitih tipova propusta u testiranju softvera, kao što su:
- Propust algoritma: Nastaje kada komponentna logika ili algoritam nije u stanju da pruži jasan rezultat za dati ulaz zbog pogrešnih koraka obrade. Ali, to se lako može sprečiti proverom diska.
- Propust u sintaksi: Javlja se kada se koristi pogrešna sintaksa u kodu. Jedan sintaksni propust može rezultirati nulim izlazom ili neuspehom.
- Računarski propust: Nastaje kada je implementacija diska pogrešna ili nije u stanju da izračuna željeni rezultat. Na primer, kombinovanje promenljivih sa pokretnim zarezom i celobrojnim promenljivim može da proizvede neočekivani rezultat.
- Vremenski propust: Kada aplikacija ne reaguje nakon što program ne uspe, to se naziva vremenskim propustom.
- Propust u dokumentaciji: Ispravna dokumentacija govori šta program zaista radi. Propust u dokumentaciji nastaje kada se program ne poklapa sa dokumentacijom.
- Propust preopterećenja: Programeri koriste strukture podataka kao što su red, stek i niz za memorijske svrhe u programima. Kada korisnik popuni memoriju i koristi je iznad njenog kapaciteta, to će dovesti do propusta preopterećenja.
- Propust hardvera: Kada navedeni hardver ne radi ispravno za željeni softver, dolazi do ove vrste propusta.
- Propust softvera: Kada navedeni softver ne može da radi ili ne podržava platformu ili operativni sistem, dolazi do ove vrste propusta.
- Propust izostavljanja: Kada je ključni aspekt pogrešno postavljen ili nedostaje u programu, javlja se propust izostavljanja. Na primer, inicijalizacija promenljive se ne vrši na početnoj tački.
- Propust provizije: Kada je izraz u izrazu pogrešan, dolazi do propusta pri proviziji. Na primer, ceo broj se inicijalizuje sa float-om.
Međutim, primenom odgovarajućih tehnika se lako može izbeći propust u programu. Ove tehnike i procedure su potrebne da bi se uskladile sa predviđenim softverskim i hardverskim specifikacijama, programskim jezicima, algoritmima itd.
Zašto ljudi brkaju ove termine?
Bug, defekt, greška, neuspeh i propust se često koriste kao sinonimi u opštem smislu. Ali testiranje softvera ima razlike u zavisnosti od njihovog ponašanja.
Bug je greška koju je napravio programer. Defekt se naziva greška koja se nađe tokom razvojnog ciklusa. Greška je kvar koji se pronađe tokom ciklusa testiranja. Neuspeh se naziva kada program ne ispunjava kriterijume. Propust je uzrok neuspeha.
Međutim, ovi termini se različito koriste za definisanje problema u kodu.
Hajde da razumemo ove termine koristeći primer iz stvarnog života:
Zamislite svoj auto koji ne radi i odvezete ga mehaničaru. Žalite se da automobil ne radi (korisnik prijavljuje kvar). Mehaničar pregleda automobil i otkriva problem (defekt). Problem (greška) je bio u tome što je vozač stavio dizel u benzinski motor (tester je identifikovao defekt) – propust je bio korisnika.
Bug naspram defekta naspram greške naspram neuspeha naspram propusta: razlike
Sada kada imate neke ideje o ovim terminima, hajde da razumemo neke ključne razlike između njih u testiranju softvera:
Bug | Defekt | Greška | Neuspeh | Propust | |
Definicija | Bug se odnosi na defekte, navodeći da softver ne radi kako se očekivalo. | Defekt je odstupanje između očekivanog i stvarnog izlaza. | Greška je problem ili greška koju je napravio programer tokom pisanja koda zbog koje kompilacija i izvršenje ne uspeva. | Neuspeh je kombinacija različitih defekata koja dovodi do kvara hardvera i softvera što dovodi do ne reagovanja sistema. | Propust je ono što uzrokuje kvar softvera i sprečava ga da izvrši predviđene zadatke. |
Ko ga pronalazi? | Inženjeri za testiranje to pronalaze. | To identifikuju inženjeri za testiranje i rešavaju programeri ili koderi. | Inženjeri za testiranje automatizacije i programeri to pronalaze. | Testeri pronalaze grešku tokom faze razvoja. | Korisnici ga pronalaze. |
Tipovi | Tipovi bugova su logičke greške, greške resursa i algoritamske greške. | Klasifikovana je kao kritična, manja, velika i trivijalna. | Tipovi grešaka su sintaksna greška, greška na ekranu korisničkog interfejsa, greška u kontroli toka, hardverska greška, greška u proračunu i još mnogo toga. | Greške, funkcionalne greške, greške GUI, bezbednosne greške, greške hardvera i još mnogo toga. | Ovo je uzrokovano nedostatkom logike, redundantnim kodovima i pogrešnom logikom. |
Uzroci | Ovo je uzrokovano netačnim unosom, greškama u snalaženju i još mnogo toga. | Ovo je uzrokovano greškom koda, nemogućnošću izvršenja, nejasnoćom u logici koda, neispravnim dizajnom, logičkom greškom itd. | Ovo je uzrokovano sistemskim greškama, ljudskim greškama i varijablama okruženja. | Ovo je uzrokovano pogrešnim dizajnom, neregularnom logikom i još mnogo toga. | |
Prevencija | Da biste sprečili bugove, morate da implementirate razvoj zasnovan na testu, prilagodite poboljšane prakse razvoja koda i još mnogo toga. | Da biste sprečili defekte, potrebno je da primenite gotove metode programiranja i da koristite ispravne i primarne prakse kodiranja softvera. | Da biste sprečili greške, potrebno je da izvršite recenzije od strane kolega, potvrdite ispravke grešaka, poboljšate ukupan kvalitet aplikacije i još mnogo toga. | Da biste sprečili neuspeh, potrebno je da potvrdite ponovno testiranje procesa, pregledate zahteve, kategorizujete probleme i procenite greške. | Da biste sprečili propuste, potrebno je da pregledate dokumente i proverite dizajn aplikacije i ispravnost kodiranja. |
Zaključak
Bugovi, defekti, greške, neuspesi i propusti utiču na različite delove aplikacije i u velikoj meri utiču na njeno korišćenje. Ovo usporava performanse i izuzetnost softvera, što dovodi do nezadovoljstva korisnika.
Zbog toga se ovi problemi moraju odmah sprečiti u bilo kom softverskom projektu, tako da vaš softver radi optimalno i da njegova potražnja ostane na vrhu tržišta.
Takođe možete pogledati neke od alata za testiranje softvera.