340 likes | 672 Views
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
E N D
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 • Paprastaitrunkatrumpiauneidinaminis • Pasiekia 100% kodosakinių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 • Statinistestavimas– 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 įvedantkorektiškusduomenis. • Kitaip – praeinantis testas ("test to pass“). • Negatyvus testavimas: • Tikslas – parodyti, kad sistemaneveikia. • Testuojama įvedantnekorektiškusduomenis. • 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/baltosdėžė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