Na slici je prikazana šema softverskog testiranja prema "The Guide to the Software Engineering Body of Knowledge (SWEBOK)".

Prema ovom standardu softversko testiranje obuhvata:

  • Osnove softverskog testiranja (Software Testing Fundamentals)
     
  • Nivoi testiranja (Test Levels)
     
  • Test tehnike (Test Techniques)
     
  • Merenja testiranja (Test Related Measures)
     
  • Test proces (Test Process)


Prva oblast na slici opisuje osnove softverskog testiranja - Software Testing Fundamentals. Pokriva osnove definicije na polju softverskog testiranja, osnovnu terminologiju i veze sa ostalim aktivnostima.

Druga oblast, nivoi testiranja, se sastoji od dve ortogonalne teme:

  • liste nivoa u koje se deli testiranje velikog softvera
  • ciljeve testiranja, gde se razmatra testiranje pod specifičnim uslovima ili posmatranim osobinama


Na istoj oblasti se identifikuje i:

  • koliko testiranja je dovoljno radi zadovoljavanja zacrtanog cilja, i
  • koje testove treba izabrati radi zadovoljavanja zacrtanog cilja


Veliki broj test tehnika je razvijen u poslednjih nekoliko decenija i stalno se predstavljaju nove i nove. Generalno prihvaćene tehnike razmatraju se u oblasti Test Tehnike. Merenja vezana za testiranje obrađuju se u oblasti Merenja Testiranja. Na kraju, teme vezane za sam proces testiranja obrađuju se u poslednjoj oblasti.

Važno je napomenuti da nisu svi tipovi testiranja primenjivi na svaki softverski proizvod.


Faults vs. Failures

Mnogo termina se u literaturi o softverskom inženjerstvu koristi radi opisa nedostataka i grešaka (eng. malfunction, fault, failure, error, i dr.). Ova terminologija je precizno definisana u standardu IEEE Standard 610.12-1990, Standard Glossary of Software Engineering Terminology (IEEE610-90), koja je data u nastavku. Ključno je jasno razdvojiti uzroke kvara, za koje se često koristi termin fault ili defect, i neželjenog efekta posmatranog u isporučenom sistemu, koju zovemo failure.  Testiranje softvera može otkriti failures, ali su faults ono što može i mora biti uklonjeno.

Treba prepoznati da uzrok za failure ne može uvek biti nedvosmisleno identifikovan. Ne postoji teoretski kriterijum radi preciznog određivanja koji fault je prouzrokovao posmatrani failure. Pojedina terminologija podržava naziv failure-causing inputs umesto faults, tj. onaj skup ulaza koji dovodi do pojave failure.


Definicija softverske greške

Standard IEEE Std. 610.12 (1990) definiše grešku kao:

  1. Razliku između izračunate, osmotrene, ili izmerene vrednosti ili stanja u odnosu na tačan, specificiran ili teoretski dobijen rezultat ili stanje. Na primer, razlika od 10 metara između izračunatog rastojanja i tačnog rastojanja.
  2. Pogrešan korak, proces, ili definisanje podatka. Na primer, pogrešno odabrana instrukcija u programu. 
  3. Pogrešan rezultat. Na primer, izračunati rezultat 11, a tačan je 10.
  4. Čovekov potez koji proizvodi pogrešan rezultat. Na primer, pogrešan potez operatera na računaru ili akcija programa na dati potez operatera.

Defekt/Otkaz se može definisati i kao odstupanje ponašanja, misije softvera u odnosu na zahteve ili specifikaciju softverskog proizvoda. Defekt/Otkaz softvera je evidentan događaj postojanja greške u softveru tj. posledica, manifestacija greške u softveru.


 
Skup grešaka

Potencijalni skup grešaka u softveru je zbir grešaka i to:

  • Grešaka u projektnim zahtevima
  • Grešaka u dizajnu softverskog proizvoda
  • Grešaka pri kodiranju softverskih komponenti
  • Grešaka u dokumentaciji
  • Loše popravke detektovanih problema u softveru


Ključni aspekti (Key Issues)

Kriterijum selekcije testa/Kriterijum adekvatnosti testa/Pravila okončanja -
predstavljaju način određivanja koji je prikladan skup test slučajeva. Kriterijum selekcije može se koristiti za izbor test slučajeva ili za proveru da li je izabrani skup testova adekvatan, odnosno za odlučivanje da li se i kada testiranje može zaustaviti.

Efikasnost testiranja/Ciljevi testiranja -
Testiranje je posmatranje primera izvršavanja programa. Izbor primera može biti diktiran od različitih ciljeva, ali samo u svetlu praćenih ciljeva može se evaluirati efikasnost skupa testova.

Testiranje radi identifikacije defekata -
predstavlja za uspešan test onaj koji prouzrokuje pad sistema. Ovo je različito od testiranja radi demonstracije da softver ispunjava specifikacije ili druge željene karakteristike, u kojima je testiranje uspešno ako nema padova.

Oracle problem -
Oracle je bilo koji (ljudski ili mehanički) agent koji određuje da li se program ponašao korektno u datom testu i prema tome doneo odluku: prošao test ili pao test. Postoji mnogo vrsta oracle-a, uz dodatak da oracle automatizacija može biti vrlo teška i skupa.


Teorijska i praktična ograničenja testiranja

Na žalost, više uspostavljenih rezultata teorije testiranja su negativni u tome, jer govore šta testiranje ne može nikada da dostigne, naspram onoga što je zaista dostignuto. Najpoznatiji citat u tom smislu je Dijkstra aforizam: „Testiranje programa može biti korišćeno da pokaže prisustvo bugova, ali nikada da pokaže njihovo nepostojanje". Razlog je što kompletno testiranje nije izvodljivo u realnom softveru. Zbog ovoga, testiranje mora biti sprovedeno zasnovano na rizicima i može biti posmatrano kao risk management strategija.

Problem nedostižnih putanja
Neizvršive putanje, control flow paths koje ne mogu biti proverene bilo kojim ulaznim podacima, su veliki problem u path-orijentisanom testiranju, i posebno u automatskom izvođenju test ulaza za code-based tehnike testiranja.

Testability
Termin software testability ima dva vezana, ali različita značenja:

  • na jednoj strani, odnosi se na stepen do kojeg je lako softveru da ispuni dati kriterijum pokrivenosti testa
  • na drugoj strani, definisan je kao mogućnost i verovatnoća merena statistički, da će softver otkriti failure pod testiranjem, ako softver sadrži greške


Vezanost testiranja sa ostalim aktivnostima

Softversko testiranje je povezano, ali ujedno i različito od statičnih tehnika menadžmenta softverskog kvaliteta, dokaza korektnosti, debugging-a, i samog programiranja. Takođe, potrebno je razmotriti i prepoznati razlike između testiranja i ostalih aktivnosti:

  • Testing vs. Static Software Quality Management Techniques
  • Testing vs. Correctness Proofs and Formal Verification
  • Testing vs. Debugging
  • Testing vs. Programming
  • Testing vs. Certification

 

 

Reference:

  • C. Kaner, J. Falk, and H.Q. Nguyen, Testing Computer Software, second ed., John Wiley & Sons, 1999
  • C. Kaner, J. Bach, and B. Pettichord, Lessons Learned in Software Testing, Wiley Computer Publishing, 2001.
Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Oblasti softverskog testiranja 1
  • Oblasti softverskog testiranja 2