testavimotaktikos - vilniaus universitetasragaisis/psi_mag2018/studentu/...•susiję ciklai –jei...

39
Testavimo taktikos Parengė: Vaidas Budrys 1

Upload: others

Post on 04-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Testavimo taktikosParengė: Vaidas Budrys

1

Page 2: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Turinys

• Baltos dėžės testavimas• Juodos dėžės testavimas• Objektiniai testavimo metodai• Tarpklasinių testavimo atvejų dizainas• Specializuotų aplinkų testavimas• Testavimo šablonai

2

Page 3: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Programinės įrangos testavimo pagrindai

• Testuojamumo charakteristikos:• Operatyvumas – „kuo geriau veikia, tuo efektyviau galima ištestuoti.“• Stebimumas – „testuoji tai, ką matai.“• Valdomumas – „kuo daugiau valdome, tuo daugiau testų galime optimizuoti“.• Skirstomumas – „keisdami testavimo apimtį, galime greičiau izoliuoti problemas“.• Paprastumas – „kuo mažiau reikia testuoti, tuo greičiau galime tai padaryti“.• Stabilumas – „kuo mažiau pakeitimų, tuo mažiau trikdžių testavimui“.• Suprantamumas – „kuo daugiau informacijos turėsime, tuo sumaniau testuosime“.

3

Page 4: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Programinės įrangos testavimo pagrindai

• Gero testo charakteristikos:• Turi didelę tikimybę rasti klaidą.• Turi nebūti pasikartojantis.• Turi būti geriausias iš sau panašių testų.• Turi būti nei per paprastas nei per sudėtingas.

4

Page 5: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Baltos dėžės testavimas

• Atliekamas nuo ankstyvų programinės įrangos kurimo stadijų.• Gali garantuoti, kad visi atskiri modulio keliai buvo patikrinti.• Patikrina visus loginius sprendimus su „true“ ir „false“ reikšmėmis.• Patikrina visus ciklus ties jų ribomis ir numatytų ribų viduje.• Patikrina vidines struktūras, kad užtikrintų jų validumą.

5

Page 6: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Bazinio kelio testavimas

1) Sudaromas srauto grafas.2) Surandami nepriklausomi programos keliai.3) Išvedami testavimo atvejai.4) Sudaromos grafų matricos

6

Page 7: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Srauto grafų sudarymas

7

Page 8: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Nepriklausomi programos keliai

Nepriklausomas kelias – tai bet koks kelias per programą, kuris įneša naujų kintamųjų arba sąlygų.

1 kelias: 1-112 kelias: 1-2-3-4-5-10-1-113 kelias: 1-2-3-6-8-9-10-1-11

8

Page 9: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Nepriklausomi programos keliai

Nepriklausomas kelias – tai bet koks kelias per programą, kuris įneša naujų kintamųjų arba sąlygų.

1 kelias: 1-112 kelias: 1-2-3-4-5-10-1-113 kelias: 1-2-3-6-8-9-10-1-114 kelias: 1-2-3-6-7-9-10-1-11

9

Page 10: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ciklomatinis sudėtingumas

Ciklomatinis sudėtingumas padeda nustatyti, kiek kelių reikia surasti.

! " = $ − & + 2! " = ) + 1

10

Page 11: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Testavimo atvejų sudarymas

1) Išanalizavus programos kodą, sudaromas srauto grafikas.2) Nustatyti gauto srauto grafiko ciklomatinį sudėtingumą.3) Nustatyti bazinį tiesiškai nepriklausomų kelių rinkinį.4) Parengti testavimo atvejus, kurie praeis kiekvieną kelią baziniame

rinkinyje.

11

Page 12: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Grafų matricos• Bazinio kelio testavimui gali padėti grafų matricų sudarymas.• Eilučių ir stulpelių skaičius lygus mazgų skaičiui srauto grafe.• Matricos nariai atitinka sąsajas (kraštus) tarp mazgų.• Matricos nariams galima pridėti svorius, kurie gali suteikti naudingos

informacijos apie programos veikimą, pavyzdžiui:• Tikimybė, kad sąsaja bus praeita.• Laikas, praleistas praeinant sąsąją.• Sąsajos praėjimui reikalingas atminties kiekis.

12

Page 13: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Valdymo struktūros testavimas

13

Page 14: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Salygų testavimas

• Testuoja logines sąlygas, esančias programos modulyje.• Salygų testavimo aptinkamos klaidos:• Neteisingi, trūkstami, pertekliniai operatoriai.• Binarinių kintamųjų klaidas.• Neteisingai padėtus skliaustus.• Santykinių operatorių klaidas• Aritmetinių išraiškų klaidas.

• Siekia ištestuoti kiekvieną sąlyga, kad užtikrintų, jog joje nėra klaidų.

14

Page 15: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Duomenų srauto testavimas

• Pasirenka testavimo kelius pagal kintamųjų aprašymą ir naudojimą programoje.• Testavimui sudaromos DU (definition-use) poros, kurios nurodo

kintamojo aprašymą ir panaudojimą.• Duomenų srauto testavimo randamos klaidos:• Kintamieji, kurie buvo paskelbti, bet nebuvo panaudoti.• Kintamieji, kurie yra naudojami, bet nebuvo paskelbti.• Kintamieji, kurie yra paskelbiami keletą kartų prieš panaudojimą.• Kintamųjų atlaisvinimas iš atminties prieš jų panaudoimą.

15

Page 16: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ciklų testavimas

16

Page 17: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ciklų testavimas

• Paprasti ciklai.• Ciklai cikle.• Susieti ciklai.• Nestruktūruoti ciklai.

17

Page 18: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Paprastų ciklų testavimas

Testuojant paprastus galima taikyti šiuos testus, kur n yra maksimalus leistinų ciklo pasikartojimų skaičius.1. Visiškai praleisti ciklą.2. Ciklą apeiti tik vieną kartą.3. Ciklą apeiti du kartus.4. Ciklą apeiti m kartų, kur m < n.5. Ciklą apeiti n – 1, n + 1 kartų.

18

Page 19: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ciklų cikle testavimas

• Taikant paprastų ciklų testavimo metodus, įmanomų testų skaičius išaugtų geometriškai, todėl reikia taikyti praktiškesnius metodus.• Ciklų cikle testavimo metodas:

1. Pradėti vidiniame cikle, visų kitų ciklų vertės minimalios.2. Vidiniam ciklui taikyti paprasto ciklo bandymus.3. Pabaigus įtraukti supantį ciklą, išlaikant išorinių ciklų vertes minimalias, o

vidinių – numatytas.4. Kartoti, kol ištestuojami visi ciklai.

19

Page 20: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ciklų testavimas

• Susiję ciklai – jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems ciklams. Tačiau jei pavyzdžiui pirmo ciklo skaitiklis naudojamas kaip antro ciklo skaitiklio pradžia, toks ciklas laikomas priklausomu ir rekomenduojama taikyti strategijas, naudojamas ciklams cikle.• Nestrūktūruoti ciklai – tokie ciklai negali būti efektyviai testuojami. Kai

tik yra galimybė, tokius ciklus reikėtų tinkamai struktūruoti.

20

Page 21: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Juodos dėžės testavimas

• Telkiasi ties funkciniais programinės įrangos reikalavimais.• Padeda atrasti klaidų, kurių negali aptikti baltos dėžės testavimas.• Dažniausiai atliekamas vėlesniais programos kūrimo etapais.• Juodos dėžės testavimo randamos klaidos:• Neteisingos arba trūkstamos funkcijos.• Sąsajos klaidos.• Klaidos duomenų struktūrose arba duomenų bazių prieigoje.• Elgsenos ir našumo klaidos.• Programos inicijavimo ir užbaigimo klaidos.

21

Page 22: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Grafais paremti testavimo metodai

• Mazgai atstoja objektus.• Sąsajos tarp objektų atspindi santykius

tarp objektų.• Sąsajų svoriai atspindi jų charakteristikas.• Pavyzdžiai:• Mazgai atstoja operacijos žingsnius, o sąsajos – loginius ryšius tarp jų.• Mazgai atstoja vartotojo stebimas programos būsenas, o sąsajos – perėjimus

tarp jų.• Mazgai yra programos objektai, o sąsajos – ryšiai tarp jų. Svoriai nurodo

programos vykdymo laiką.

22

Page 23: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ekvivalentinis skirstymas

• Išdalija programos įėjimo domeną į klases.• Padeda rasti klaidų klases, taip sumažinant testų skaičių.• Ekvivalenčių klasių parinkimas:• Intervalas – viena tinkamas ir du netinkami.• Specifinė vertė – viena tinkama ir dvi netinkamos.• Specifinis rinkinio narys – vienas tinkamas ir vienas netinkamas.• Binarinis – abu.

23

Page 24: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ribinių verčių analizė

• Daugiau klaidų aptinkama ties įėjimo domeno ribomis.• Apima ne tik programos įėjimą, bet ir išėjimą.• Esant nustatytoms riboms patikrinti šiek tiek didesnes ir mažesnes

vertes.• Testavimo atvejai turi pasiekti mažiausias ir didžiausias leistinas

išėjimo vertes.• Dažnai programuotojų atliekama intuityviai.

24

Page 25: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Testavimas ortogonaliais masyvais

• Gali būti taikomas kai įėjimo verčių domenas gan mažas, tačiau per didelis pilnam testavimui.• Testavimui duomenų parinkimui sudaromi L9 ortogonalūs masyvai.• Užtikrina vieno ir dviejų parametrų klaidų aptikimą.

25

Page 26: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

26

Page 27: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Objektiniai testavimo metodai

27

Page 28: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Klaidomis paremtas testavimas

• Testuotojas ieško galimų klaidų ir pagal tai sukuria testus.• Efektyvumas priklauso nuo testuotojo gebėjimo numatyti klaidas.• Integracijos testavimas – metodas ieškantis klaidų iškviečiant

operacijas.• Taikomas objekto ir jo atributų lygyje.• Integracijos testavimas tikrina kviečiantį kodą, o ne kviečiamą.

28

Page 29: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Scenarijų testavimas

• Koncentruojasi ties tuo, ką daro vartotojas, o ne ką daro programa.• Scenarijai askleidžia sąveikos tarp skirtingų programos modulių,

klaidas.• Testavimo atvejai sudėtingesni ir labiau realistiški, nei klaidomis

paremtame testavime.• Vienas testas gali apimti daug posistemių.• Testavimas gali ilgai užtrukti.

29

Page 30: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Tarpklasinių testavimo atvejų dizainas

30

Page 31: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Keleto klasių testavimas

1) Kiekvienai testuojamai klasei sugeneruoti atsitiktines testų sekas iš galimų operacijų. Operacijos siunčia žinutes kitoms serverinėms klasėms.

2) Kiekvienai žinutei parenkama klasė ir atitinkama operacija serveryje.

3) Kiekvienai iškviestai serverio operacijai nustatyti siunčiamas žinutes.4) Kiekvienai žinutei nuspręsti sekančias operacijas.

31

Page 32: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

32

Page 33: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Testai iš elgsenos modelių

• Remiamasi būsenų diagrama.• Rašomi testai turi apeiti visas

leistinas būsenas.• Prie minimalios testavimo sekos

pridedamos papildomos sekos.• Esant keletui klasių, kuriamos

kelios būsenų diagramos.

33

Page 34: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Specializuotų aplinkų testavimas

34

Page 35: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Kliento/serverio architektūrų testavimas

• Dėl paskirstymo, susijungimo, koordinavimo ir kitų problemų kliento/serverio programinę įrangą daug sudėtingiau testuoti.

• Kliento/serverio prgraminė įranga testuojama 3 etapais:1. Kliento programa testuojama atjungta nuo serverio.2. Kliento ir serverio programos testuojamos jas sujungus, bet neišskiriamos

tinklo operacijos.3. Testuojama visa sistema, įskaitant ir tinklo veiklą bei našumą.

• Dažnai naudojami testavimo metodai: kliento programos funkcionalumo testai, serverio testai, duomenų bazių testai, tinklo testai.

35

Page 36: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Dokumentacijos testavimas

• Dokumentaciją irgi reikia testuoti.• Norint atlikti išsamų testavimą, privalu pasitelkti asmenis iš trečios

šalies.• Skirstomas į dvi fazes:• Peržiūra ir analizė.• Gyvas testas.

36

Page 37: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Realaus laiko sistemų testavimas

• Testai privalo atsižvelgti į laike kintančius duomenis.• Techninės įrangos gedimai taip pat turi būti apgalvoti.• Taikytina realaus laiko sistemų testavimo strategija:• Individualių procesų testavimas.• Elgsenos testavimas.• Procesų sąveikos testavimas.• Sistemos testavimas.

37

Page 38: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Testavimo šablonai

• Nusako dažnai sutinkamus testavimo atvejus, kurie gali būti pakartotinai panaudojami.• Leidžia geriau suprasti problemos priežastį.• Testavimo šablonų pavyzdžiai:• Testavimas poromis.• Scenarijų testavimas.• Atskira testavimo sąsaja.

38

Page 39: Testavimotaktikos - Vilniaus universitetasragaisis/PSI_mag2018/Studentu/...•Susiję ciklai –jei ciklai nepriklausomi, jiems galima taikyti tas pačias strategijas, kaip ir paprastiems

Ačiū už dėmesį!

39