Testavimo metodai Struktūrinis testavimas Funkcinis testavimas Objektiškai orientuotas testavimas Specializuotas testavimas Testavimo šablonai Testavimo metodai Testing tactics Vaida Kalpakovaitė Vilniaus universitetas Matematikos ir informatikos fakultetas Informatikos katedra 2014 m. gegužės 7d. Vaida Kalpakovaitė Testavimo metodai
65
Embed
Testavimo metodai Testing tacticsragaisis/PSI_mag2014/Studentu/Testing...Ciklomatinis sudėtingumas– programinės įrangos metrika, kiekybiškai apibrėžianti loginį programos
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Testavimas vyksta pagal testavimo atvejus (angl. test cases).Testavimo atvejai/testai yra kuriami naudojantis testavimometodais.Testavimo metodai (angl. techniques): kaip rašyti gerustestavimo atvejus?
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Struktūrinis testavimas
Struktūrinis (angl. structural) testavimas dar vadinamasbaltos (angl. white-box) dėžės ar stiklo dėžės (angl.glass-box).
Testuojamos vidinės konstrukcijos: ciklai, loginės struktūros irkt.Tokie testai turėtų užtikrinti, kad:
1 Visi nepriklausomi keliai buvo įvykdyti bent kartą.2 Įvykdyti loginių konstrukcijų blokai.3 Įvykdyti ciklai su ribinėmis bei operacinėmis reikšmėmis.4 Patikrintos vidinės duomenų struktūros.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Struktūrinis testavimas
Struktūrinis (angl. structural) testavimas dar vadinamasbaltos (angl. white-box) dėžės ar stiklo dėžės (angl.glass-box).Testuojamos vidinės konstrukcijos: ciklai, loginės struktūros irkt.Tokie testai turėtų užtikrinti, kad:
1 Visi nepriklausomi keliai buvo įvykdyti bent kartą.2 Įvykdyti loginių konstrukcijų blokai.3 Įvykdyti ciklai su ribinėmis bei operacinėmis reikšmėmis.4 Patikrintos vidinės duomenų struktūros.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Pagrindinio kelio (angl. basis path) testavimas
Pagrindinio kelio metodas leidžia nustatyti loginį sudėtingumą,kuris naudojamas apibrėžti vykdymo kelių aibę.Pagal apibrėžtą aibę parašyti testavimo atvejai garantuoja,kad visi programos sakiniai bus įvykdyti.Metode yra naudojamas struktūrinis grafas.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Struktūrinis (angl. flow) grafas (2)
Viršūnės (angl. nodes) atitinka vieną ar daugiau programossakinių. Sąlygas atitinkančios viršūnės yra vadinamospredikatinėmis viršūnėmis (angl. predicate nodes).Briaunos (angl. edges/links) parodo vykdymo eigą.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Nepriklausomi programos keliai (angl. independentprogram paths)
Nepriklausomas kelias – bet kuris programos kelias, kuris turi bentvieną naują sakinį.Grafe – toks kelias, kuris eina per bent vieną naują briauną.Bazinė aibė (angl. basis set) – visi nepriklausomi keliai.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Ciklomatinis sudėtingumas (angl. cyclomatic complexity)
Ciklomatinis sudėtingumas – programinės įrangos metrika,kiekybiškai apibrėžianti loginį programos sudėtingumą.Ciklomatinis sudėtingumas V (G) yra lygus:
1 Regionų skaičiui.2 V (G) = E − N + 2, kur E – grafo briaunų skaičius, N – grafo
viršūnių skaičius.3 V (G) = P + 1, kur P – predikatinių viršūnių skaičius.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Testavimo atvejų kūrimas
1 Nubraižyti struktūrinį grafą.2 Rasti ciklomatinį sudėtingumą.3 Rasti nepriklausomus kelius.4 Paruošti testus, kad būtų pereita visais nepriklausomais
keliais. Kai kelias negali būti testuojamas atskirai, jis turėtųbūti testuojamas kartu su kitu keliu.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Grafo matrica (angl. graph matrices) (2)
Standartinė elementų savybė – briaunos svoris (angl. linkweigth): 1 ar 0.Galima pridėti ir kitų savybių: vykdymo laikas, reikalingasatminties kiekis ir kt.
Naudojant grafų matricas, testavimo atvejų kūrimas gali būtidalinai ar pilnai automatizuotas.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Grafo matrica (angl. graph matrices) (2)
Standartinė elementų savybė – briaunos svoris (angl. linkweigth): 1 ar 0.Galima pridėti ir kitų savybių: vykdymo laikas, reikalingasatminties kiekis ir kt.Naudojant grafų matricas, testavimo atvejų kūrimas gali būtidalinai ar pilnai automatizuotas.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Sąlygų testavimas (angl. condition testing) (2)
Yra du sąlygų tipai, naudojami sąlyginiuose sakiniuose:Paprastos sąlygos (angl. simple conditions) ir Sudėtinės sąlygos(angl. compound conditions).
Paprastos sąlygos:Loginio tipo kintamieji (Pvz. Boolean).Sąlyginis reiškinys (Palyginimo operatoriai: <, >,≤,≥,=, 6=).Loginio tipo kintamieji ar sąlyginiai reiškiniai su neigimu (NOToperatorius).
Sudėtinės sąlygos yra sudarytos iš dviejų ar daugiau paprastųsąlygų, loginių operatorių (NOT, AND, OR), skliaustelių beiaritmetinių operacijų.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Duomenų srauto testavimas (angl. data flow testing) (2)
Sakykim, kad kiekvienas programos sakinys turi unikalųnumerį ir funkcijos nekeičia parametrų ar globalių kintamųjų.Tada:
Toks sakinys S, kuriame kintamasis X yra apibrėžtas –DEF (S).Toks sakinys S, kuriame kintamasis X yra panaudotas –USE (S ′).
Tada kintamojo X apibrėžimo - panaudojimo grandinė (angl.definition-use chain) yra [X , S, S ′].Testavimo atvejai turėtų padengti visas tokias apibrėžimo -panaudojimo grandines.
Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas
Ciklų testavimas (angl. loop testing) (2)
Paprasti (angl. simple) ciklai:1 Ciklą vykdyti 0 kartų (praleisti).2 Ciklą vykdyti vieną kartą.3 Ciklą vykdyti 2 kartus.4 Ciklą vykdyti m < n kartų.5 Ciklą vykdyti n – 1, n, n + 1 kartų.
Įdėtiniai (angl. nested) ciklai:1 Pradėti nuo vidinio ciklo. Visų išorinių ciklų skaitikliai turėtų
būti 0.2 Vidiniam ciklui atlikti paprasto ciklo testus.3 Pakilti per vieną lygį ir testus vykdyti ten.4 Vykdyti ankstesnius iki veiksmus iki bus pasiektas išorinis
Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas
Funkcinis (angl. functional) testavimas
Funkcinis testavimas dar vadinamas juodos (angl. black-box)ar elgsenos (angl. behavioral) testavimu.
Testuojami funkciniai reikalavimai.Tokie testai turėtų aptikti:
1 Trūkstamas ar neteisingai veikiančias funkcijas.2 Sąsajos klaidas.3 Klaidas duomenų struktūrose ar išorinėse DB.4 Elgsenos ar našumo klaidas.5 Inicializacijos ir darbo nutraukimo klaidas.
Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas
Funkcinis (angl. functional) testavimas
Funkcinis testavimas dar vadinamas juodos (angl. black-box)ar elgsenos (angl. behavioral) testavimu.Testuojami funkciniai reikalavimai.Tokie testai turėtų aptikti:
1 Trūkstamas ar neteisingai veikiančias funkcijas.2 Sąsajos klaidas.3 Klaidas duomenų struktūrose ar išorinėse DB.4 Elgsenos ar našumo klaidas.5 Inicializacijos ir darbo nutraukimo klaidas.
Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas
Ekvivalenčių klasių metodas (angl. equivalencepartitioning) (1)
Idėja: Dažnai panašūs duomenys sukelia tokias pat klaidas.Esmė: Testavimo atvejai yra kuriami, padalijant galimus įvestiesduomenis į klases.Tikslas: Sumažinti testavimo atvejų skaičių.
Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas
Ekvivalenčių klasių metodas (angl. equivalencepartitioning) (2)
Klasės dalijamos taip, kad su klasėje esančiais įvestiesduomenimis būtų atliekamos vienodos operacijos.Klasėje esantys duomenys yra teisingi arba klaidingi.
Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas
Ekvivalenčių klasių metodas (angl. equivalencepartitioning) (3)
Jei įvesties duomenys – yra apibrėžiamos klasės:1 Intervalas – viena teisinga ir dvi klaidingos.2 Konkreti reikšmė – viena teisinga ir dvi klaidingos.3 Reikšmė iš aibės – viena teisinga ir viena klaidinga.4 Loginė reikšmė – viena teisinga ir viena klaidinga
Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas
Ribinių reikšmių metodas (angl. boundry value analysis)(3)
Jei įvesties duomenys – testuojama turėtų būti su duomenimis:1 Intervalas [a; b] – a, b ir šiek tiek daugiau bei mažiau.2 Konkreti skaitinė reikšmė – minimumas, maksimumas ir šiek
tiek daugiau bei mažiau.3 Tikrinant išvesties reikšmes – patikrinti reikšmes, kurios po
skaičiavimų grąžina didžiausią ir mažiausią reikšmes.4 Duomenų struktūroms – tikrinti rėžius.
Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas
Stačiakampio masyvo metodas (angl. orthogonal arraytesting) (1)
Idėja: Kai kuriais atvejais, įvesties duomenų aibė yra gana siaura,bet didėjant parametrų skaičiui galimų skirtingų testavimoduomenų kombinacijų aibė auga greitai.Esmė: Reikia imti testavimo duomenų poaibį.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Objektiškai orientuotas (angl. object-oriented) testavimas
Sistemos, konstruojamos naudojant OO programinės įrangoskūrimo metodus, yra sudarytos iš sluoksnių.OO sistemų testavimas gali būti pradėtas sukonstravusmodelius.Galima testuoti ir atskiras klases, vėliau klasių tarpusaviobendradarbiavimą ir t.t.Galiausiai rašomi testavimo atvejai, tikrinantys funkcionalumą.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Testavimo atvejai ir OO
Dėl enkapsuliacijos gali būti sudėtinga testuoti klases jųišorėje.Paveldėjus iš klasės – reikia pertestuoti.Bazinių klasių testavimo atvejai gali tikti išvestinėms, betdažnai vis vien turėtų būti rašomi papildomi testavimo atvejai.Visi anksčiau išvardyti testavimo būdai tinka ir OOprograminei įrangai.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Klaidų paieškos metodas (angl. fault-based testing)
Idėja ir esmė: Reikia kurti testus, kurie turi didelę tikimybęatskleisti klaidas.
Testuojama/peržiūrima dokumentacija ir nusprendžiama, kuryra didelė tikimybė, kad bus klaidų.Vykdomi integracijos testai, kurių metu ieškoma tokių klaidųkaip netinkamas rezultatas, neteisingos operacijos naudojimas,ne to metodo kvietimas.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Testavimo atvejai ir klasių hierarchija
Sakykim klasė Derived išplečia Base.Klasė Base turi metodus inherited() ir redefined().Klasė Derived perrašo turi metodą redefined().Ar Derived gali būti naudojami tie patys testai kaip ir klaseiBase?
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Testavimo atvejai ir klasių hierarchija
Sakykim klasė Derived išplečia Base.Klasė Base turi metodus inherited() ir redefined().Klasė Derived perrašo turi metodą redefined().Ar Derived gali būti naudojami tie patys testai kaip ir klaseiBase?Turi būti perpanaudojama kuo daugiau testų.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Testavimas naudojant scenarijus (angl. scenario-basedtesting) (1)
Klaidų paieškos metodas neranda tokių klaidų kaip (1)klaidinga specifikacija ir (2) teisingas posistemių veikimas.Testavimas naudojant scenarijus remiasi vartotojo elgesiu susistema.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Testavimas naudojant scenarijus (angl. scenario-basedtesting) (2)
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Paviršinės ir gilios struktūros testavimas (angl. surfacestructure and deep structure testing)
Paviršinė struktūra – išoriškai pastebima OO programosstruktūra. Testuojamos vieši (vartotojui pasiekiami) objektųmetodai/laukai. Testai kuriami pagal PS vartotojų atliekamasužduotis.Gili struktūra – struktūra, identifikuojama nagrinėjantarchitektūrą ir/ar išeities tekstą. Testuojama sistemos daliųtarpusavio komunikacija, priklausomybės elgesys. Testaikuriami naudojantis analizės ir architektūros modeliais.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Klasių testavimas
Testuoti pradedama nuo mažų sistemos vienetų.Metodai klasių testavimui: (1) atsitiktinis testavimas ir (2)kategorinis testavimas.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Atsitiktinis testavimas (angl. random testing)
Sakykim klasė Account turi tokias operacijas kaip open(),setup(), deposit(), withdraw(), balance(),summarize(), creditLimit(), close().Dirbant su objektu turi būti įvykdytos šios operacijos:open(), setup(), deposit(), withdraw(), close(). Taiyra minimali seka, kurią turi padengti testas.Tačiau yra galimi ir tarpiniai veiksmai: open(), setup(),deposit(), [deposit()|withdraw()|balance()|summarize()|creditLimit()]n, withdraw(), close(),taigi ir tokia seka:open(), setup(), deposit(), deposit(), balance(),summarize(), withdraw(), close()Atsitiktiniai testai – atsitiktinai parinktos veiksmų sekos.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Kategorijų testavimas (angl. partition testing)
Ekvivalenčių klasių atitikmuo OO PS.Operacijos į testavimo atvejus grupuojamos pagal priklausymątam tikrai kategorijai: (1) pagal būsenas, (2) pagal atributus,(3) pagal atliekamų operacijų kategoriją.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Kategorijų testavimas: pagal būsenas (angl. state-based)
Grupuojama pagal tai, ar yra keičiama klasės būsena.Sakykim klasėje Account būseną keičia deposit(),withdraw(), o balance(), summarize() ir creditLimit()– nekeičia.Galimi tokie testavimo atvejai:(1) open(), setup(), deposit(), deposit(), withdraw(),withdraw(), close().(2) open(), setup(), deposit(), summarize(),creditLimit(), withdraw(), close().
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Kategorijų testavimas: pagal atributus (angl.attribute-based)
Grupuojama pagal naudojamus atributus.Sakykim klasė Account turi atributus balance ircreditLimit.Operacijos turėtų būti suskirstytos į tokia klases kaip:(1) Naudoja creditLimit(2) Keičia creditLimit.(3) Nenaudoja creditLimit.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Kategorijų testavimas: pagal kategorijas (angl.category-based)
Operacijos turėtų būti suskirstytos į tokia klases kaip:(1) Inicializacijos: open(), setup()(2) Skaičiavimų: deposit(), withdraw()(3) Užklausų: balance(), summarize(), creditLimit().(4) Darbo baigimo: close()
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Keleto klasių testavimas (1)
Testavimo atvejų kūrimas tampa daug sudėtingesnistestuojant ne atskiras klases, o sistemos dalis.Klasių bendradarbiavimas gali būti testuojamas naudojantanksčiau aptartus OO testavimo metodus.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Keleto klasių testavimas (2)
Metodika:1 Pasirinktai klasei (kliento klasei) sukurti testuojamas
atsitiktinių operacijų sekas.2 Kiekvienai operacijai nustatyti bendradarbiaujančias klases
(serverio klases).3 Kiekvienai serverio klasės operacijai nustatyti atliekamas
operacijas.4 Nustatyti operacijas, atliekamas anksčiau nustatytose serverio
klasės operacijose ir įtraukti jas į testavimo atvejį.
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas
Keleto klasių testavimas remiantis būsenų diagrama
Grafinės vartotojo sąsajos testavimasKliento-serverio architektūros testavimasDokumentacijos ir vartotojo vadovo testavimasRealaus laiko sistemų testavimas
Grafinės vartotojo sąsajos testavimas
1 Kadangi grafinės vartotojo sąsajos yra panašios gali būtnaudojami standartiniai testai.
2 Baigtiniai automatai gali būti naudojami kurti testams,būdingiems tam tikriems duomenims.
Grafinės vartotojo sąsajos testavimasKliento-serverio architektūros testavimasDokumentacijos ir vartotojo vadovo testavimasRealaus laiko sistemų testavimas
Kliento-serverio architektūros testavimas
Kliento-serverio architektūros testavimas yra sudėtingasprocesas.Testuojama 3 lygiuose: (1) atskiros sistemos dalys, (2) kartutestuojamas klientas-serveris, (3) pilna architektūra – įskaitanttinklo operacijų našumą.Dažnai atliekami tokie testai:
Klientinės programos funkcionalumo.ServerioDuomenų bazių.Transakcijų.Tinklo (angl. network communication).
Grafinės vartotojo sąsajos testavimasKliento-serverio architektūros testavimasDokumentacijos ir vartotojo vadovo testavimasRealaus laiko sistemų testavimas
Dokumentacijos ir vartotojo vadovo (angl. help facilities)testavimas
Dokumentacija ir vartotojo vadovai taip pat turėtų būtitestuojami.Pirmiausia turėtų būti atliekamos peržiūros, kad užtikrintiturinio aiškumą.Po to, testuoti kartu su vartotoju.
Grafinės vartotojo sąsajos testavimasKliento-serverio architektūros testavimasDokumentacijos ir vartotojo vadovo testavimasRealaus laiko sistemų testavimas
Realaus laiko sistemų testavimas
Realaus laiko sistemose svarbu ne tik kokie veiksmai buvoatlikti, bet ir kada.Testavimo strategija:
Užduočių testavimas.Elgsenos testavimas.Užduočių tarpusavio testavimas (angl. interrask testing).Sistemos testavimas.
Testavimas poromis (angl. pair testing).Atskira testavimo sąsaja (angl. separate test interface).Testavimas remiantis scenarijais (angl. scenario testing).