360 likes | 677 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 apimtis. Visko ištestuoti neįmanoma Skirtingų tipų sistemoms reikalingi skirtingi: Testavimo metodai/įrankiai
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 apimtis • Visko ištestuoti neįmanoma • Skirtingų tipų sistemoms reikalingi skirtingi: • Testavimo metodai/įrankiai • Testavimo lygiai, sudėtingumas • Projekto pradžioje apibrėžiama testavimo apimtis – ką testuosime
Testavimo apimtis • Testavimo lygis, testavimo objektas • Testavimo tikslai • Verifikavimas, validavimas • Bazinis (smoke) testavimas • Patvirtinimo testavimas, regresinis testavimas • Alfa, beta testavimas • Sistemos parengtumo darbui testavimas • Testavimas sistemos palaikymo metu
Testavimo lygmuo • Testavimo objektas • modulis • modulių integracija • sistema • sistemų integracija • Sąryšis su V modeliu Reikalavimai Priėmimo testavimas Sistemos specifikacija Sistemos testavimas Techninė specifikacija Integracijos testavimas Modulio projektas Modulio testavimas Programavimas
Modulio (unit) testavimas • Modulis: • Procedūra, funkcija, metodas, ... • Atliekamas programuotojų • Ar modulis atitinka specifikaciją? • Ar visas modulio kodas gali būti vykdomas? • Defektai neregistruojami – tiesiog ištaisomi
Modulių testavimo privalumai • Lengva daryti pakeitimus – jei testai praeina, reiškia nieko nesugadinom • Palengvina integracijos testavimą • Testai - aktuali sistemos dokumentacija • Tekstinė dokumentacija daugiau kam suprantama, tačiau labiau linkusi pasenti • Test-driven development atveju – vietoje projektavimo
Modulio (unit) testavimas • Idealiu atveju – moduliai tarpusavyje nesusiję • Realybėje: • Objektai kviečia kitų objektų metodus • Reikalingi imituojantys objektai (mock objects), fiktyvūs metodai (method stubs) ir fiktyvūs kvietėjai (drivers, test harnesses)
Fiktyvūs metodai • Pvz.: Time = GetCurrentTime(); if(Time >= ’07:00’){ AlarmRing(“Get up!”); } GetCurrentTime() { return 07:00 }
Fiktyvūs kvietėjai • Pvz., turime objektą, neturime, kas kviečia jo metodus: AlarmClock ac = new AlarmClock(); ac.AlarmRing(“Morning!”); AlarmRing(string Text) { Beep(10); Print(Text); }
Imituojantys objektai • Svarbuatskirti: • interfeisą nuo realizacijos • vieną sistemą nuo kitos • Jei modulis kviečia DB: • Sukuriamas abstraktus DB užklausų interfeisas • Sukuriama šio interfeiso realizacija – imituojantis objektas • Modulio testas nekviečia DB, kviečia imituojantį objektą
Integracijos testavimas • Apjungiami moduliai • Integracijos strategijos: • Visko iškart integracija (big-bang) • Integracija iš viršaus į apačią • Integracija iš apačios į viršų
Visko iškart integracija • Visi moduliai apjungiami iškart į pilną sistemą • Neskiriamas dėmesys atskirų modulių sąsajoms • Sunku izoliuoti problemas • Prastas pasirinkimas
Integracija iš viršaus į apačią • Sistema surenkama etapais: pirmiausia moduliai, kviečiantys kitus modulius • Testuojama pradedant nuo “paviršiaus” • Reikalingifiktyvūs moduliai (stubs) 1 2 3 4 5 6 7
Integracija iš apačios į viršų • Sistema surenkama etapais: pirmiausia moduliai, kuriųniekasnekviečia • Testuojama pradedant nuo “apačios” • Reikalingifiktyvūs kvietėjai (drivers) 1 2 3 4 5 6 7
Sistemos testavimas • Ištestuoti pavienių modulių tarpusavio integraciją - nepakankama • Testuojama visa sistema: • Funkcionalumas pagal funkcinę specifikaciją • Nefunkcinis testavimas • Aplinka – kuo panašesnė į realaus naudojimo • Atlieka nepriklausoma testavimo komanda
Sistemų integracijos testavimas • Testuojama skirtingų sistemų sąveika. Pvz.: • Banko sąskaitų valdymo sistemos integracija su bankomatu • Jei sistemas kuria skirtingos komandos: • Kas atsakingas už SIT? • Saveikos būdai: • Webservice, Message Queuing, Batch files, ...
Sistemų integracijos testavimas • Testuojama: • Sistemų suderinamumas (ar sujungtos nelūžta) • Sistemų jungiamumas (ar perduodami duomenys) • Duomenų nuoseklumas (ar atitinka visose sist.) • Duomenų nuoseklumas konkrečiu laiko momentu • Duomenų formatų nuoseklumas (perduodant duomenis formatas nesikeičia arba keičiasi korektiškai)
Pasikartojam • Testavimo lygmuo testavimo objektas • Testavimo objektai: • Modulis • Modulių integracija • Sistema • Sistemų integracija
Testavimo tikslai • Kokią sistemos savybę norime ištestuoti: • Sistemos tinkamumas • Panaudojamumas • Našumas • Saugumas • Klaidų toleravimas • Diegimas • …
Sistemos tinkamumo testavimas • Ar tinka numatytoms užduotims atlikti? • Ar tinkama realiems naudotojams? • Ar pagerina darbo procesą? • Patogu testuoti pagal panaudojimo atvejus
Verifikavimas ir validavimas • Verifikavimas – patvirtinimas, kad PĮ atitinka specifikuotus reikalavimus • Ar kuriam PĮ teisingai? • Validavimas – patvirtinimas, kad PĮ atitinka konkrečius naudotojų poreikius • Ar kuriam teisingą PĮ?
Panaudojamumo testavimas • Useability • Ar patogu? • Ar aišku ir paprasta? • Ar pritaikyta neįgaliesiems? • Specialios testavimo metodikos: • Naudotojų stebėjimas • Geriausių praktikų sąrašai (checklists) • Atitikimas panaudojamumo standartams
Našumo testavimas • Kaip efektyviai dirba sistema: • Esant tikėtinam apkrovimui • Esant ekstremaliai dideliam apkrovimui • Ar pakankamai trumpas reakcijos laikas? • Ar neįvyksta klaidų? • Ar sumažėjus apkrovimui sistemos veikimas atsistato į normalų? • Reikalingi specialūs įrankiai
Saugumo testavimas • Testuojamas: • Konfidencialumas • Duomenų integralumas • Autentifikacija • Autorizacija • Nepaneigiamumas (non-repudiation) • Reikalingos specialios žinios ir įrankiai
Klaidų toleravimo testavimas • Klaidos: • Įvesti nekorektiški duomenys • Nėra priėjimo prie serverio (DB, etc.) • Resursų nepasiekiamumas (timeout, deadlock) • ... • Kaip klaida pateikiama naudotojui • suprantamas pranešimas • galimybė pratęsti darbą
Diegimo testavimas • Ar pavyksta sėkmingai sudiegti į įvairias OS? • Ar galima pakeisti diegimo katalogą? • Ar yra visi reikalingi žingsniai ir tik jie? • Jei sistema jau įdiegta..? • Ar korektiškai išdiegiama? • Sudėtingoms sistemoms: • Diegimo procedūrų dokumentai (sinchronizuojami duomenys, keičiama DB schema...)
Pasikartojam • Testavimo tikslai – ką norime ištestuoti:
Bazinis (smoke) testavimas • Gamyboje – pripildom dūmų, kad patikrinti, ar nėra įtrūkimų – ar galima toliau testuoti • PĮ kūrime – atliekam bazinius visos sistemos testus, kad įsitikinti, ar galima/verta toliau testuoti • Ar sistema nelūžta vykdant paprasčiausius scenarijus
Bazinis (smoke) testavimas • Dažnai: • Naudojamas regresiniam testavimui • Automatizuojamas • Atliekamas sistemos surinkimo (build) metu
Patvirtinimo ir regresinis testavimas • Patvirtinimo testavimas – anksčiau nepraėjusių TA vykdymas, siekiant patvirtinti, jog defektai ištaisyti • Regresinis testavimas – pakartotinis PĮ testavimas po padarytų pakeitimų, siekiant patvirtinti, jog neatsirado naujų defektų nekeistose PĮ vietose
Alfa ir beta testavimas • Alfa testavimas – testuoja potencialūs naudotojai PĮ kūrimo aplinkoje • Beta testavimas – testuoja potencialūs naudotojai savo aplinkoje, reikalinga jiems prieinama defektų raportavimo sistema • Paprastai taikoma produktams (COTS PĮ) • Gali būti keletas iteracijų
Parengtumo darbui testavimas • Beta testavimas labiau tinka produktams • Dideliems projektams atliekamas parengtumo darbo testavimas (operational readiness testing) • Pvz.: banko sistemų atnaujinimas • Dar kitaip – sistemos paleidimo repeticija • Ar viskas sumigruota? • Ar veikia visi procesai?
Testavimas sistemos palaikymo metu • Po sistemos paleidimo – palaikymas (maintenance) • Pakeitimai: • Reikalingas papildomas funkcionalumas • Sistema perkeliama į naują aplinką/platformą • Migruojama į kitą sistemą (duomenų perkėlimas/archyvavimas) • Randami nauji defektai
Testavimas sistemos palaikymo metu • Po pakeitimų: • Patvirtinimo testavimas • Regresinis testavimas (reikalinga įtakos analizė) • Galimos problemos atliekant įtakos analizę: • Pasenusios specifikacijos • Pasikeitusi projekto komanda
Pasikartojam • Bazinis testavimas • Patvirtinimo ir regresinis testavimas • Alfa ir beta testavimas • Parengtumo darbui testavimas • Testavimas sistemos palaikymo metu