testiranje programa
DESCRIPTION
Testiranje programa, informatika, racunarstvo, programiranje, tehnologije, it, telekomunikacijeTRANSCRIPT
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.1© 2006 Pearson/Prentice Hall
Sadržaj
8.1 Greške i otkazi softvera8.2 Pitanja testiranja8.3 Jedinično testiranje8.4 Integraciono testiranje8.5 Testiranje objektno orijentisanih sistema 8.6 Planiranje testa8.7 Automatizovani alati za testiranje8.8 Kada treba prestati sa testiranjem8.9 Primer iz informacionih sistema8.10 Primer iz prakse8.11 Šta ovo poglavlje znači za vas
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.2© 2006 Pearson/Prentice Hall
Poglavlje 8 Ciljevi
• Vrste grešaka i njihove klasifikacije• Svrha testiranja• Jedinično testiranje• Strategije integracionog testiranja• Planiranje testiranja• Kada treba prestati testiranje
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.3© 2006 Pearson/Prentice Hall
8.1 GREŠKE I SOFTVERSKI OTKAZI Zašto softver otkazuje (fail )?
• Specifikacija pogrešna: nije tačno navedeno šta je kupac tražio i šta mu je potrebno
• Nedostaje neki zahtev• Zahtev koji ne može da se implementira sa
propisanim hardverom i softverom• Greška u dizajnu sistema• Greška u programskom kodu• Algoritam nepravilno ili nepotpuno
implementiran
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.4© 2006 Pearson/Prentice Hall
8.1 GREŠKE I SOFTVERSKI OTKAZI Cilj testiranja
• Cilj testiranja: otkriti greške• Test je uspešan samo ako se greška otkrije
ili ako dođe do otkaza u toku testiranja– Prepoznavanje grešaka je postupak
utvrđivanja zbog koje greške, ili grešaka, je došlo do otkaza
– Ispravljanje grešaka ili otklanjanje grešaka je postupak unošenja izmena u sistem u cilju otklanjanja grešaka
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.5© 2006 Pearson/Prentice Hall
8.1 GREŠKE I SOFTVERSKI OTKAZI Cilj testiranja
• Prilikom izrade softvera, u cilju kontrole kvaliteta napisanog koda,
koristimo veštine iz domena softverskog inženjerstva.
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.6© 2006 Pearson/Prentice Hall
8.1 GREŠKE I SOFTVERSKI OTKAZI Vrste grešaka
• Algoritainska greška• Greške izračunavanja i greške preciznosti
– nastupaju kada se formula pogrešno implementira ili kada ne izračunava rezultat sa zahtevanom preciznošću
• Greška dokumentacije– dokumentacija ne odgovara onome što program zaista radi
• Stresne greške ili greške preopterećenja– performanse sistema postaju neprihvatljive kako se njegove
aktivnosti približavaju specifikovanim granicama
• Greške vremenskog rasporeda ili greške koordinacije
• Greške propusnosti ili greške performanse– sistem ne omogućava performansu i brzinu specifikovanu u
zahtevima
• Greške standarda i procedura
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.7© 2006 Pearson/Prentice Hall
8.1 GREŠKE I SOFTVERSKI OTKAZI Uobičajene algoritamske greške
• se javlja kada algoritam komponente, ili njegova logika, ne proizvode ispravan rezultat za dati ulaz– grananje pre vremena;– prekasno grananje;– ispitivanje pogrešnog uslova;– nedodeljivanje početne vrednosti promenljivim ih
podešavanje invarijanti petlje;– propust pri ispitivanju konkretnog uslova (na
primer, kada može nastupiti deljenje nulom);– poredenje promenljivib neodgovarajućeg tipa
• sintaksne greške
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.8© 2006 Pearson/Prentice Hall
8.1 GREŠKE I SOFTVERSKI OTKAZI Ortogonalna klasifikacija grešaka
Tip greške Značenje
Funkcija Greška utiče na mogućnost, spregu sa korisnikom, sprege sa proizvodom, sprege sa hardverskom arhitekturom ili globalnom strukturom podataka.
Interfejs Greška u međudejstvu sa drugim komponentama ili upravljačkim programima putem pozivanja, makroa, kontrolnih blokova ili listi parametara
Provera Greška u logici programa koja ne uspeva pravilno da proveri vah'anost podata ka i njihove vrednosti pre ujihove upotrebe
Dodeljivanje Greška u strukturi podataka ili u inicijallzaciji bloka koda
Vreme/serijalizacija Greška koja utiče na vremenski raspored korištenja deljenih resursa u i resur sa realnog vremena
Gradnja/pakovanje/sjedinjavanje
Greška koja potiče od problema u skladištima, od promena upravljanja ili od kontrole verzija
Dokumentacija Greška koja utiče na štamparu materijal ili napomene vezane za održavanje
Algoritam Greška koja se odnosi na efikasnost ili ispravnost algoritama ili strukture po dataka ali ne i dizajna
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.9© 2006 Pearson/Prentice Hall
8.1 GREŠKE I SOFTVERSKI OTKAZI Greške za jedno odeljenje u okviru Hewlett-Packarda
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.10© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJAOrganizacija testiranja
• Testiranje modula, testiranje komponente ili jedinično testiranje
• Integraciono testiranje• Funkcionalno testiranje• Testiranja performanse• Završni test prihvatanja• Instalacioni test
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.11© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJA Koraci testiranja
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.12© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJA Organizacija testiranja
• Bezlično programiranje: gde se programi posmatraju kao komponente većeg sistema, a ne kao vlasništvo onih koji su ih napisali– depersonalizovani razvojni tim se bavi
ispravljanjem greške, a ne prebacivanjem krivice na konkretnog izvršioca
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.13© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJA Ko vrši testiranje?
• Nezavisan tim za testiranje– izbegavamo konflikt– poboljšanje objektivnosti– testiranje se može obavljati istovremeno sa
kodiranjem
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.14© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJA Pogledi na predmet testiranja
• Zatvorenu kutiju ili crnu kutiju sa nepoznatim sadržajem: funkcionalnost test objekata
• Otvorena kutija ili bela kutija: koristiti unutrašnju strukturu predmeta testiranja u cilju sprovođenja različitih testova
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.15© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJA Bela kutija
• Prednost– bez ograničenja vezano za unutrašnju strukturu
• Nedostaci– nije moguće pokrenuti kompletan test
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.16© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJA Podsetnik 8.2 STRUKTURE KUTIJA
• Crna kutija: opis spoljšnjeg ponašanja• Kutija stanja: crna kutija uz dodatak
informacije o stanju• Bela kutija: Kutija stanja sa opisom
procedure
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.17© 2006 Pearson/Prentice Hall
8.2 PITANJA TESTIRANJA Faktori koji utuču na izbor filozofije testiranja
• broj mogućih logičkih putanja;• prirodu ulaznih podataka;• količinu potrebnog izračunavanja;• složenost algoritama.
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.18© 2006 Pearson/Prentice Hall
8.3 JEDINIČNO TESTIRANJE Ispitivanje koda
• Prolasci kroz kod• Inspekcija koda
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.19© 2006 Pearson/Prentice Hall
8.3 JEDINIČNO TESTIRANJE PODSETNIK 8.3 OPTIMALNA VELIČINA TIMA ZA INSPEKCIJE
• Stopa priprema, a ne veličina tima, određuje efektivnost inspekcije
• Efektivnost i efikasnost tima zavisi od njihovog poznavanja svojih proizvoda
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.20© 2006 Pearson/Prentice Hall
8.3 JEDINIČNO TESTIRANJE Dokazivanje ispravnosti koda
• Tehnike formalnog dokazivanja• Simboličko izvršavanje• Automatizovano dokazivanje teorema
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.21© 2006 Pearson/Prentice Hall
8.3 JEDINIČNO TESTIRANJE Testiranje nasuprot dokazivanja
• Dokazivanje: hipotetičko okruženje• Testiranje: stvarni radni ambijent
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.22© 2006 Pearson/Prentice Hall
8.3 JEDINIČNO TESTIRANJE Koraci u izboru slučajeva testiranja
• Određivanje ciljeva testa • Izbor test slučajeva • Definisanje testa
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.23© 2006 Pearson/Prentice Hall
8.3 JEDINIČNO TESTIRANJE Potpunost testiranja
• Testiranje iskaza• Testiranje grananja• Testiranje putanja• Testiranje putanje od definicije do upotrebe• Testiranje svih upotreba• Testiranje svih upotreba predikata/nekih
upotreba izračunavanja• Testiranje svih upotreba
izračunavanja/nekih upotreba predikata
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.24© 2006 Pearson/Prentice Hall
8.3 JEDINIČNO TESTIRANJE Odnosi snaga strategija testiranja
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.25© 2006 Pearson/Prentice Hall
8.4 INTEGRACIONO TESTIRANJE
• Odozdo-nagore• Odozgo-nadole• Veliki prasak• Senvič integracija• Modifikovana odozgo-nadole• Modifikovana senvič integracija
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.26© 2006 Pearson/Prentice Hall
8.4 INTEGRACIONO TESTIRANJE Terminologija
• Rukovalac komponentom: rutina koja poziva određenu komponentu i saopštava joj slučaj
• Lažna rutina (stab): program specijalne namene koji simulira aktivnost komponente koja nedostaje
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.27© 2006 Pearson/Prentice Hall
8.4 INTEGRACIONO TESTIRANJE Pogled na sistem
• Primer hijerarhije komponenti
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.28© 2006 Pearson/Prentice Hall
8.4 INTEGRACIONO TESTIRANJE Integracija odozdo nagore- primer
• Sekvence testova i njihovih zavisnosti
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.29© 2006 Pearson/Prentice Hall
8.4 INTEGRACIONO TESTIRANJE Integracija odozgo nadole- primer
• Najviša komponenta A je jedina koja se testira izolovano
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.31© 2006 Pearson/Prentice Hall
8.4 INTEGRACIONO TESTIRANJE Integracija velikog praska - primer
• Zahteva i stabove kao i drajvere za testiranje nezavisnih komponenata
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.32© 2006 Pearson/Prentice Hall
8.4 INTEGRACIONO TESTIRANJE Sendvič integracija- primer
• Sistem se posmatra u tri sloja: ciljni sloj u sredini
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.37© 2006 Pearson/Prentice Hall
8.6 PLANIRANJE TESTA
• Svaki korak u procesu testiranja mora da se planira
• Proces testiranja ima1. vlastiti životni ciklus u sklopu razvoja i 2. može da teče paralelno sa drugim
aktivnostima
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.38© 2006 Pearson/Prentice Hall
8.6 PLANIRANJE TESTA
• Pogotovo je potrebno da se planiraju sledeći koraci u procesu testiranja:1. utvrđivanje ciljeva testiranja;2. dizajn slučajeva;3. pisanje slučajeva;4. testiranje slučajeva;5. izvršavanje testova;6. ocenjivanje rezultata testiranja.
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.39© 2006 Pearson/Prentice Hall
8.6 PLANIRANJE TESTA Svrha plana
• Plan testiranja objašnjava: – ko će obaviti testiranje, – zašto se vrše testovi, – kako se testovi vode i – kakav im je raspored
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.40© 2006 Pearson/Prentice Hall
8.6 PLANIRANJE TESTA Sadržaj plana
• Šta su ciljevi testa • Kako će test biti pokrenut • Koji kriterijumi će se koristiti da bi se
odredilo kada je testiranje završeno
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.43© 2006 Pearson/Prentice Hall
8.8 KADA TREBA PRESTATI SA TESTIRANJEM- Još grešaka?
• Verovatnoća pronalaženja greške tokom razvoja
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.50© 2006 Pearson/Prentice Hall
8.11 ŠTA OVO POGLAVLJE ZNAČI ZA VAS
• Važno je shvatiti razliku između – greške
• (problema sa zahtevima, dizajnom, kodom, dokumentacijom ih slučajevima za testiranje) i
– otkaza • (problema u funkcionisanju sistema).
• Cilj testiranja je da se pronađu greške, a ne da se dokaže ispravan rad
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.51© 2006 Pearson/Prentice Hall
8.12 ŠTA OVO POGLAVLJE ZNAČI ZA RAZVOJNI TIM
• Testiranje je i samostalna i grupna aktivnost
• Važno da se radi sa timom na: 1. bezličan način i upotrebi 2. što više raspoloživih metoda u cilju
pronalaženja grešaka u što je moguće 3. ranijim fazama razvoja
Pfleeger and Atlee, Software Engineering: Theory and Practice
Page 8.52© 2006 Pearson/Prentice Hall
8.12 ŠTA OVO POGLAVLJE ZNAČI ZA RAZVOJNI TIM
• Integraciono testiranje je takođe timska aktivnost i zahteva 1. izbor strategije integracije, 2. planiranje testiranja, 3. generisanje slučajeva za testiranje i 4. izvršavanje testova u saradnji sa ostalim
članovima.