5da65efbd2857a13c595dacee79f2964.ppt
- Количество слайдов: 34
Programų sistemų testavimas Aistė Stikliūtė aiste. stikliute@mif. vu. lt http: //web. vu. lt/mif/a. stikliute +370 604 17281 VU MIF Programų sistemų katedra
Testavimo metodų klasifikavimas • • • Statinis / dinaminis testavimas Pozityvus / negatyvus testavimas Juodos / baltos / pilkos dėžės testavimas Aprašytas / neaprašytas testavimas Rankinis / automatizuotas testavimas
Statinis / dinaminis testavimas • Statinis testavimas – programos (specifikacijos arba kodo) testavimas nevykdant programos – Peržiūros – Statinė kodo analizė • Dinaminis testavimas – PĮ testavimas vykdant šią PĮ
Statinio testavimo privalumai • Paprastai trunka trumpiau nei dinaminis • Pasiekia 100% kodo sakinių padengimą gan greitai – dinaminis paprastai pasiekia < 50% • Gali būti atliekamas prieš kompiliavimą • Gali rasti klaidas, kurių d. t. negali: sintaksės klaidas, sunkiai palaikomą ir standartų neatitinkantį kodą • Pigesnis, įrankių naudojimas labiau atsiperka • Statinis testavimas – profilaktika, dinaminis – vaistai
Dinaminio testavimo privalumai • “Tikri”, o ne potencialūs defektai • Gali rasti defektus, kurių negali rasti statinis t. • Paprasčiausias d. t. gali būti atliekamas be specialių įrankių
Statinis ar dinaminis testavimas? • Teisingas atsakymas – abu • Papildo vienas kitą • Laikui spaudžiant: – Paprastai renkamasi dinaminį testavimą – Efektyvesnis – statinis testavimas
Pozityvus / negatyvus testavimas • Pozityvus testavimas: – Tikslas – parodyti, kad sistema veikia. – Testuojama įvedant korektiškus duomenis. – Kitaip – praeinantis testas ("test to pass“). • Negatyvus testavimas: – Tikslas – parodyti, kad sistema neveikia. – Testuojama įvedant nekorektiškus duomenis. – Kitaip – nepraeinantis testas ("test to fail“).
Pozityvus ar negatyvus testavimas? • Teisingas atsakymas – abu • Papildo vienas kitą • Laikui spaudžiant: – Paprastai renkamasi pozityvų testavimą – Reikėtų įvykdyti su didžiausia rizika susijusius negatyvius scenarijus
Pavyzdys • Reikalavimas: jei naudotojas įveda blogus duomenis, sistema pateikia klaidos pranešimą • Testai: – T: Sistema rodo klaidą, kai turi rodyti – N: Sistema nerodo klaidos, kai neturi rodyti • Pamastymui: – Sistema rodo klaidą, kai neturi rodyti? – Sistema nerodo klaidos, kai turi rodyti?
Pasikartojam • Statinis / dinaminis testavimas – Skirtumai – Privalumai, trūkumai • Pozityvus / negatyvus testavimas – Skirtumai – Privalumai, trūkumai
Juodos/baltos dėžės testavimas • Juodos dėžės testavimas – testavimas nežinant programos struktūros (kodo) ar ją ignoruojant • Baltos dėžės testavimas – testavimas, paremtas programos vidinės struktūros analize
Pilkos dėžės testavimas • Mišri technika • Pvz. : beveik juodos dėžės testavimas, bet patikrinant duomenis DB
Juodos dėžės privalumai • Testuotojui nereikia žinoti apie realizaciją, įskaitant specifines programavimo kalbas • Testuotojas ir programuotojas nepriklauso vienas nuo kito • Testuojama iš naudotojo perspektyvos • Testavimo atvejai gali būti kuriami iškart kai tik turima specifikacija
Juodos dėžės trūkumai • Gali būti ištestuota tik maža aibė įvesties reikšmių – visoms prireiktų ~begalybės laiko • Gali būti neištestuota daug kelių per programą • Be tikslių ir aiškių specifikacijų sunku sukurti testavimo atvejus • Gali kartotis testavimo atvejai – testuotojas nežino, ką programuotojas jau testavo
Juodos dėžės metodai. Pvz. : • • • Scenarijų testavimas Testavimas pagal reikalavimų specifikaciją Našumo, apkrovos testavimas Atsiktinis testavimas. . .
Atsitiktinis testavimas • Testuojama parenkant atsitiktines įvesties reikšmes • Tikslas – ištestuoti be jokių žmogiškų prielaidų • Kad ir kokios nekorektiškos reikšmės ar veiksmų seka – programa turi nelūžti • Tinka aptikti saugumo spragoms • Dažnai automatizuojamas – ta pati vieta testuojama su įvairiomis reikšmėmis
Baltos dėžės testavimas • Atsižvelgia į vidinį sistemos ar modulio mechanizmą • Reikalingos programavimo žinios, norint identifikuoti visus įmanomus kelius per programą • Parenkami tokie įvesties duomenys, kad būtų ištestuoti įvairūs keliai per programą; apibrėžiami teisingi rezultatai
Baltos dėžės privalumai • Lengva atrasti įvesties duomenis, padedančius efektyviai ištestuoti programą • Pvz. : surandam duomenis DB • Pvz. : pažiūrim kode, ko tikisi metodas • Padeda optimizuoti kodą (ir atitinkamai sumažinti potencialių defektų skaičių)
Baltos dėžės trūkumai • Reikalingas patyręs testuotojas brangiau kainuoja • Sunku peržiūrėti kiekvieną kodo gabalėlį randama tik dalis klaidų • Neranda klaidų, kilusių dėl to, kad kažkas buvo praleista
Baltos dėžės metodai. Pvz. : • • • Sakinių testavimas Sprendimų/atšakų (branches) testavimas Kelių testavimas Modifikuotas sprendimų testavimas. . .
Baltos ir juodos dėžės metodai. Pvz: • • Patikimumo (robustness) testavimas Ribinių reikšmių metodas Defektų įterpimo metodas. . .
Defektų įterpimo metodas • Į kodą tyčia įterpiami defektai: – Žinomi defektai. Testavimo efektyvumui matuoti ir PĮ kokybei prognozuoti – Specialus kodas ištestuoti sunkiai atkartojamoms klaidų situacijoms – Kodo mutacija (naudojant įrankius) • Svarbu nepamiršti įterptus defektus pašalinti!
Kodo mutacijos pvz. : • Pakeičiamas kodas: –a+1 a– 1 –a b • Defektai generuojami PĮ vykdymo metu: – imituojamas RAM sugadinimas – imituojamas OS kvietimas
Pasikartojam • Juodos / baltos/pilkos dėžės testavimas: – Privalumai, trūkumai – Metodai • Vėlgi: vienas kitą papildo
Aprašytas / neaprašytas testavimas • Aprašytas testavimas (scripted testing) – iš anksto dokumentuoti testavimo žingsniai • Neaprašytas testavimas (unscripted testing) – nedokumentuoti testavimo žingsniai, jie kuriami ir atliekami eigoje • Vienas kitą papildo
Aprašytas testavimas • Lengva atkartoti konkretų testą: – Programuotojams taisant – Testuotojams atliekant pakartotinį testavimą • Struktūriškesnis pateikimas, lengviau padengti visus reikalavimus • Reikalinga pradinė investicija TA aprašymui
Neaprašytas testavimas • • Sunku atkartoti konkretų testą Sunku padengti visus reikalavimus Nereikia pradinės laiko investicijos Testavimas kūrybiškesnis
Rankinis / automatizuotas testavimas • Rankinis testavimas – testavimą atlieka testuotojas, pats vykdydamas PĮ – seniausias ir tiksliausias testavimo būdas • Automatizuotas testavimas – testavimas atliekamas naudojant įrankį/įrankius
Automatizuotas testavimas • Įrankių tipai: – Automatinio TA generavimo įrankiai – Modulių testavimo įrankiai – GUI testavimo įrankiai: • Interneto aplikacijų • Asmeninių kompiuterių PĮ – Našumo testavimo įrankiai –. . .
Automatizuotas testavimas • Privalumai: – Leidžia išvengti žmogiškojo faktoriaus (žioplumas , pamiršimas) – Tą patį testą galima atlikti daug kartų (defektų atkartojimas, regresinis testavimas) – Galima testuoti tą patį scenarijų su daug skirtingų reikšmių – Randa netikėtas klaidas
Automatizuotas testavimas • Trūkumai: – Reikalinga didelė pradinė investicija (laiko, resursų) – Ne visada atsiperka, tinka (testo nereikės/nepavyks vykdyti daug kartų automatizuoti nereikėtų) – Aptinka ne visus defektus (neieškom nerandam)
Automatizuotas testavimas • Automatizuoti verta, kai: – Testas bus vykdomas daug kartų: • Regresinis testavimas • Skirtingos konfigūracijos (OS, naršyklės) – Reikalavimai nesikeis – Testas skirtas patikrinti ne logiką, o funkcionalumą palaikantį kodą
Pasikartojam • Aprašytas / neaprašytas testavimas: – Skirtumai, privalumai, trūkumai • Rankinis / automatizuotas testavimas: – Privalumai, trūkumai – Automatizuoto testavimo įrankiai
Klausimai ir idėjos


