Gotovi Seminarski Diplomski Maturalni Master ili Magistarski

Puna verzija: Obezbjeđenje kvaliteta i testiranje softvera
Trenutno pregledate Lite verziju foruma. Pogledajte punu verziju sa odgovarajućim oblikovanjima.
Razvojem mikroelektronike, informatičke i komunikacijske tehnologije, rješenja zasnovana na računarima primjenjuju se u svim područjima ljudskog djelovanja. Izvršavanje i najbizarnijih poslova postalo je danas zavisno od ispravnosti rada računara. Računar se sastoji od sklopovkse opreme, njegovog fizičkog dijela i programske podrške, koja predstavlja uputstva fizičkom dijelu kako da izvrši postavljeni zadatak. Za ispravan rad neophodno je da su ispravna oba, odnosno sklopovski i programski dio. Kako bi se postigao željeni kvalitet prije nego se programska rješenja puste u eksploataciju, vrše se zahtjevna testiranja sa ciljem uklanjanja što je moguće više grešaka.

Testiranje programske podrške je proces traženja grešaka. U njemu su obuhvaćene sve aktivnosti potrebne za vrednovanje sposobnosti programa da izvši pred njim postavljeni zadatak, kao i za tumačenje dobijenih rezultata. Programska podrška nije poput drugih fizičkih sistema koji za date ulazne veličine generišu odgovarajuće izlazne veličine. Razlika je u načinu u kojem dolazi do pojave kvara. Kod većine fizičkih sistema do kvara dolazi zbog određenog i najčešće nerazboritog skupa stanja koja u sistemu mogu nastupiti usled spoljašnjeg uticaja. Do pojave grešaka u programskoj podršci dolazi zbog mnogo bizarnih razloga. Detektovati sve različite modove kvara kod programske podrške je opšte neizvodljivo.

2. Testiranje softvera

Testiranje softvera (ili samo testiranje) je bio prvi softverski alat za osiguranje kvaliteta softvera koji se primjenjivao za kontrolu softverskih produkata prije njihove isporuke ili instalacije kod klijenta. Na početku, testiranje je bilo ograničeno na završnu fazu razvoja softvera. Kasnije, zbog važnosti ranije detekcije softverskih defekata, a i da bi se ispunili koncepti osiguranja kvaliteta softvera, SQA profesionalci su inicirali proširenje testiranja i na testiranje u procesu kodiranja, što je dovelo do testiranja softverskih modula (unit testing) i kompletnog integracionog testiranja.

Testiranje softvera je formalni proces koji se izvodi sa specifičnim timom za testiranje kojim se ispituju softverske jedinice ili cjelokupni softverski paketi izvršavanjem programa na kompjuteru. Svi povezani testovi se izvršavaju u skladu sa odobrenim test procedurama na odobrenim test slučajevima.

Riječi i fraze u definiciji omogućavaju nam da poredimo glavne karakteristike testiranja softvera sa d rugim alatima životnog ciklusa SQA:
■ Formalni proces – Planovi testiranja softvera su dijelovi razvoja projekta i plana kvaliteta, sa unaprijed danim vremenskim rasporedom i aktivnostima postignutim dogovorom izmeĎu klijenta i razvojnih inženjera.
Drugim riječima, ad hoc ispitivanje softvera od strane kolega ili regularne provjere od strane tim lidera ne sačinjavaju testiranje softvera.
■ Specijalizirani tim za testiranje– Nezavisni tim ili eksterni konsultanti koji su specijalizirani u testiranju izvršavaju testiranje uglavnom u namjeri da eliminiraju pristranost i da garantiraju efektivno profesionalno testiranje. Generalno je prihvaćeno da testovi koji se izvršavaju od strane developera koji su i pisali softverski kod, vode do siromašnih rezultata jer je tako teško otkriti greške, jer se radi o greškama, koje sami developer nisu bili u mogućnosti identifikovati ranije. Još uvijek se testiranje, posebno testiranje programskih modula (unit) nastavljaju da izvršavaju od strane developera u mnogim organizacijama.
■ Izvršavanje programa – Bilo koja forma aktivnosti osiguranja kvaliteta softvera koja ne uključuje izvršavanje softvera, kao npr. inspekcije koda, ne mogu se smatrati testom.
■ Odobrene test procedure – Procesi testiranja se izvršavaju u skladu sa testnim planom i procedurama testiranja koje su odobrene i prilagoĎene od strane softverske kompanije i u skladu sa SQA procedurama.
■ Odobreni test slučajevi – Slučajevi testiranja (test cases) koji se ispituju se u potpunosti definiraju sa testnim planom. Izostavljanje ili dodavanje se ne očekuje tokom procesa testiranja.

Testiranje je aktivnost izvedena radi evaluacije kvaliteta proizvodnje i njegovog poboljšanja, putem identifikovanja defekata i problema. Ono nije aktivnost koja počinje samo nakon kompletiranja faze kodiranja. Softversko testiranje se danas vidi kao aktivnost koja obuhvata cio proces razvoja i održavanja i predstavlja važan dio kompletne konstrukcije softvera. Planiranje testiranja treba da počne sa ranom fazom requirement procesa, i test planovi i procedure moraju biti sistematski i kontinualno razvijani i po potrebi redifinisani. Pravi stav prema kvalitetu je prevencija, mnogo je bolje izbjeći probleme nego ih ispravljati.

Testiranje softvera i otkrivanje grešaka


Posebna pažnja danas se posvećuje aktivnosti otkrivanja grešaka. Ovo je bitna razlika u odnosu na shvatanje da je važno potvrditi da program ili sistem radi. Ova definicija testiranja softvera je napisana u knjizi Glenford Majers "Umjetnost testiranja softvera". Ovakvu definiciju je dao iz razloga što je tvrdio da je softver jedan od najkompleksnijih proizvoda ljudskog umnog rada. Nemoguće je dokazati da je softver bez greške. A takođe je nemoguće povinovati se prostom imperativu i naći sve greške.


Zašto testiranje?

Zato što su veliki gubici kompanija koje razvijaju softver upravo zbog velikog broja defekata u isporučenom softveru. Prvenstveni zadatak test inženjera je otkrivanje problema u softveru sa ciljem da se oni otklone prije predaje softverskog proizvoda kupcu.
Od test inženjera se zahteva da otkrije što je moguće više problema i to što više onih, vrlo ozbiljnih čije posledice mogu biti katastrofalne sa materijalnog i bezbjednosnog aspekta. Zato je sa svih aspekata potrebno da se proces testiranja softvera učini što efikasnijim i uz što manje troškove ukoliko je to moguće.
Testiranje softvera je proces verifikacije programa ili sistema sa ciljem otkrivanja i ispravljanja grešaka i predstavlja integralni dio razvoja softvera. Primenjuje se u svakoj fazi razvojnog ciklusa,a obuhvata više od 50% vremena potrebnog za razvoj softvera.
Vrijeme za testiranje?

Ukoliko se uspostavi strožiji proces obezbijeđenja kvaliteta softvera u pogledu efikasne prevencije i detekcije grešaka, utoliko mijenjamo opšte mišljenje o tome kako se obezbjeđuje visok kvalitet softverskog proizvoda. Drugi problem je taj, da skoro nikad nema dovoljno vremena za testiranje softvera. Zato treba da mijenjamo odnos prema aktivnosti testiranja softvera i vremenu koje je planirano za testiranje, tako što ćemo ga efikasnije utrošiti u ranim fazama razvoja softvera. Potrebno je misliti o testiranju softvera već prvog dana nakon početka projekta, a ne kao što je uobičajeno da se aktivnost testiranja softvera planira na kraju razvoja softvera.

Otklanjanje grešaka

Pristup testiranju softvera na bazi otklanjanja grešaka je takođe proces koji je podložan greškama. Tester softver mora da identifikuje i proprati uočen problem do mjesta nastanka (izvora) greške u softveru. Za otklanjanje grešaka u softveru se moraju istražiti sve prethodne verzije i dokumentacija o aktivnostima u svim prethodnim fazama u razvoju softvera, ukoliko su raspoloživi. Cilj da se pokaže da softver nema grešaka, kroz otkrivanje i otklanjanje grešaka, je lošija od strategije da se izvrši analiza uzroka nastanka grešaka, pa tek onda izvrši uklanjanje grešaka.

Troškovi otklanjanja grešaka

Troškovi otklanjanja uočenih grešaka, umjesto spriječavanja njihovog nastanka, su veliki i prouzrokuju veliki gubitak u poslovanju i nezadovoljstvo kupca zbog grešaka u softveru. Prije nego što se čeka završetak faze implementacije komponente softvera, pa tek onda testiranje komponente u clju otkrivanja i otklanjanja grešaka u njjima, a koje su nastale u ranijim fazama procesa razvoja, potrebno je preventivno djelovati na nastanak tih grešaka, kako bi se izbjegla kašnjenja i uvećali troškovi njihovog otklanjanja. Upravo je to cilj sprovođenja aktivnosti prevencije nastanka grešaka. U poslednje vrijeme je razvijen veliki broj metoda u cilju spriječavanja nastanka grešaka u softveru, metod dokazivanja korektnosti sofrvera, strategija projektovanja po Six Sigma i druge.


Kada prestati testirati?

Testiranje se praktično može izvoditi beskrajno. Nikad se ne može sa sigurnošću reći da su otkriveni i uklonjeni svi mogući defekti. Ali u jednom trenutku treba prestati testirati. Pitanje je kada to učiniti? Realno posmatrano, testiranje je trgovina između cijene koštanja, vremena i kvaliteta. Stoga se, na nesreću, najčešće koristi pristup da se testiranje prekida kad god je jedan od resursa (vrijeme, novac ili broj testova) prekoračen. Bolji je pristup da se definiše prekid testiranja, kada je pouzdanost u zahtjevanim okvirima ili kad su dobici od daljnjeg testiranja manji od cijene testiranja. Ovo će obično zahtijevati upotrebu pouzdanih modela da bi se vrednovala predviđena pozdanost testirane programske podrške. Svaki proces vrednovanja zahtijeva ponavljanje izvođenja sledećih ciklusa: prikupljanja podataka koji dovode do greške, modeliranja i predviđanje. Ova metoda neće biti najbolja ukoliko je riječ o jako zavisnim sistemima i to zato, što je kod njih potrebno mnogo vremena i truda da bi se akumulirali stvarni podaci koji dovode do pojave greške.



3. Tehnike softverskog testiranja

Tehnike testiranja odnose se na različite metode ispitivanja pojedine funkcije računarskog programa,sistema ili softverskog proizvoda. Svaki tip testiranja ima sopstvenu tehniku testiranja,a neke tehnike kombinuju funkcije oba tipa. Važnost softverskog testiranja i njegovog uticaja na softver ne može biti podcijenjena. Softversko testiranje je osnovna komponenta osiguranja softverskog kvaliteta i predstavlja pregled specifikacija,dizajna i kodiranja. Veća vidljivost softverskih sistema i troškovi povezani sa softverskim neuspehom su motivirajući faktori za napredno planiranje, putem testiranja. Veoma je neugodno za softversku oganizaciju kada utroši više od 40% svog rada na testiranje..

Osnove softverskog testiranja

Tokom testiranja softversko inženjerstvo izrađuje seriju test slučajeva koji se koriste „rip apart“ (izdvajanje posebnih delova) softvera koji se proizvodi. Softverski inženjeri su obično stvaraoci koji poznaju unaprijed predviđene koncepte testiranja i bave se pronalaženjem i ispravljanjem grešaka kada one budu identifikovane.

Dizajn test slučaja

Izrada dizajna softverskog testiranja može biti izazovan proces. Softverski inženjeri testiranje često vide kao “zakašnjelu misao” (afterthought), međutim, prilikom izrade pravog test slučaja još uvek nisu sigurni u njegovu kompletnost. Cilj testiranja je u pronalaženju najviše mogućih grešaka uz minimalni utošak vremena i napora za to. Razvijen je veliki broj metoda dizajna test slučajeva koji nude developer-u sistematičan pristup testiranja. Metode nude pristup koji može obezbijediti kompletnu analizu i ponuditi najviše mogućnosti za otkrivanje grešaka u sofveru.

Test protoka informacija

Postoje dvije vrste tipa ulaznih koje se uzimaju pri testiranju protoka informacija
• Softverska konfiguracija i
• Test konfiguracije.

Testiranja se obavljaju i svi rezultati testa se porede sa očekivanim rezultatima.Kada je pogrešan podatak identifikovan, greška je podrazumijevana i započinje se debugging. Postupak debugging-a (ispravljanja greške) je nepredvidiv element procesa testiranja. Identifikovanje i ispravak greške koja ukazuje na odstupanje od 0,01% između stvarnih i očekivanih rezultata, može trajati satima, danima ili mjesecima.

Ciljevi softverskog testiranja

Pravila koja deluju na cilj testiranja su:
• Testiranje je proces izvršavanja programa, sa ciljem pronalaženja grešaka
• Dobar test slučaj će imati dobre šanse u pronalaženju neotkrivene greške
• Uspješan test slučaj otkriva novu grešku

• Softverska konfiguracija
• Test konfiguracije
Referentni URL