testavimo metodai testing tacticsragaisis/psi_mag2014/studentu/testing...ciklomatinis...

65
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

Upload: others

Post on 04-Jan-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimo metodaiTesting tactics

Vaida Kalpakovaitė

Vilniaus universitetasMatematikos ir informatikos fakultetas

Informatikos katedra

2014 m. gegužės 7d.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimo metodai

Testavimas vyksta pagal testavimo atvejus (angl. test cases).Testavimo atvejai/testai yra kuriami naudojantis testavimometodais.Testavimo metodai (angl. techniques): kaip rašyti gerustestavimo atvejus?

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Gerų testavimo atvejų charakteristikos

Didelė tikimybė rasti klaidą.Tikslingas (angl. not redundant).Geriausias (angl. best of breed).Nei per paprastas, nei per sudėtingas.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Struktūrinis (angl. flow) grafas (1)

Dar vadinamas programos grafu (angl. program graph).Grafas vaizduoja programos vykdymo eigą.Grafinis vaizdavimas:

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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ą.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Nepriklausomi programos keliai

Kelias 1: 1-11.Kelias 2: 1-2-3-4-5-10-1-11.Kelias 3: 1-2-3-6-8-9-10-1-11.Kelias 4: 1-2-3-6-7-9-10-1-11.Ne nepriklausomas kelias: 1-2-3-4-5-10-1-2-3-6-8-9-10-1-11.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Nepriklausomi programos keliai

Kelias 1: 1-11.Kelias 2: 1-2-3-4-5-10-1-11.Kelias 3: 1-2-3-6-8-9-10-1-11.Kelias 4: 1-2-3-6-7-9-10-1-11.Ne nepriklausomas kelias: 1-2-3-4-5-10-1-2-3-6-8-9-10-1-11.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Ciklomatinis sudėtingumas

1 V (G) = 4.2 V (G) = 11− 9 + 2.3 V (G) = 3 + 1.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Ciklomatinis sudėtingumas

1 V (G) = 4.2 V (G) = 11− 9 + 2.3 V (G) = 3 + 1.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Nepriklausomi keliai ir ciklomatinis sudėtingumas

Ciklomatinis sudėtingumas parodo nepriklausomų kelių skaičių(bazinę aibę), taigi, ir testų skaičių, reikalingų pilnai padengtiprogramą.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Grafo matrica (angl. graph matrices) (1)

Grafo matrica – kvadratinė matrica, kurios dimensija – struktūriniografo viršūnių skaičius ir kuri atitinka struktūrinį grafą.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Sąlygų testavimas (angl. condition testing) (1)

Sąlygų testavimas – testavimo atvejų kūrimo metodas, kuriuotestuojamos loginės išraiškos.

Idėja: Klaidos yra dažniau sutinkamos ties sąlygų sakiniais, neinuosekliuose sakiniuose.Tikslas: Užtikrinti, kad nėra sąlyginių sakinių klaidų.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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ų.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Sąlygų testavimas (angl. condition testing) (3)

Testuojant randamos klaidos:Loginių operatorių klaidos (neteisingi, praleisti, pertekliniaioperatoriai).Loginių kintamųjų klaidos.Skliaustelių klaidos.Palyginimo operatorių klaidos.Aritmetinių operacijų klaidos.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Duomenų srauto testavimas (angl. data flow testing) (1)

Duomenų srauto testavimas – testavimo atvejų kūrimo metodas,kai testai rašomi siekiat padengti kintamųjų aprašymo ir naudojimokelius.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Ciklų testavimas (angl. loop testing) (1)

Ciklų testavimas – testavimo atvejų kūrimo metodas, kuriotestuojamas ciklų validumas.

Idėja: Ciklai yra viena dažniausiai naudojamų programųkonstrukcijų.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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

ciklas.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Pagrindinio kelio testavimasSąlygų testavimasDuomenų srauto testavimasCiklų testavimas

Ciklų testavimas (angl. loop testing) (3)

Sujungti (angl. concatenated) ciklai:1 Jei ciklai yra nepriklausomi – naudoti paprastų ciklų testavimo

metodą.2 Jei ciklai yra priklausomi – naudoti įdėtųjų ciklų testavimo

metodą.

Nestruktūrizuoti (angl. unstructured) ciklai:1 Turėtų būti perrašyti.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas

Testavimas naudojant grafus (angl. graph-based testing)(1)

Grafas vaizduoja programos objektų ir duomenų sąryšius.Yra tikrinama ar sąryšiai yra tokie, kokių tikimasi.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas

Testavimas naudojant grafus (angl. graph-based testing)(2)

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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ų.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas

Ribinių reikšmių metodas (angl. boundary value analysis)(1)

Idėja: Klaidos dažnesnės įvesties duomenų aibės pakraščiuose neicentre.Esmė: Testavimo atvejai yra kuriami, padalijant galimus įvestiesduomenis į klases.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas

Ribinių reikšmių metodas (angl. boundary value analysis)(2)

Papildo ekvivalenčių klasių metodą – testuojant duomenysimami iš klasių ribų.Tinka ir išvesties duomenims testuoti.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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į.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas

Stačiakampio masyvo metodas (angl. orthogonal arraytesting) (2)

L9 stačiakampis masyvas:

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimas naudojant grafusEkvivalenčių klasių metodasRibinių reikšmių metodasStačiakampio masyvo metodas

Stačiakampio masyvo metodas (angl. orthogonal arraytesting) (3)

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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ą.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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ų.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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ų.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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)

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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ą.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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().

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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()

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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į.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Klaidų paieškos metodasTestavimo atvejai ir klasių hierarchijaTestavimas naudojant scenarijusPaviršinės ir gilios struktūros testavimasKlasių testavimasKeleto klasių testavimas

Keleto klasių testavimas (3)

1 verifyAcct, verifyPin, depositReq.2 verifyAcctBank[validAcctValidationInfo],

verifyPinBank[validPinValidationInfo],depositReq[depositAccount].

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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

1 open, setupAccnt, deposit(initial), withdraw(final),close.

2 open, setupAccnt, deposit(initial), deposit, balance,credit, withdraw(final), close.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

3 Turėtų būti naudojami automatizuoti testai.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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).

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

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.

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Testavimo šablonai

Galimai perpanaudojami testavimo būdai.Testavimo šablonai:

Testavimas poromis (angl. pair testing).Atskira testavimo sąsaja (angl. separate test interface).Testavimas remiantis scenarijais (angl. scenario testing).

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Klausimai?

Vaida Kalpakovaitė Testavimo metodai

Testavimo metodaiStruktūrinis testavimas

Funkcinis testavimasObjektiškai orientuotas testavimas

Specializuotas testavimasTestavimo šablonai

Ačiū už dėmesį!

Vaida Kalpakovaitė Testavimo metodai