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

Post on 04-Jan-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Testavimo taktikosParengė: Vaidas Budrys

1

Turinys

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

2

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

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

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

Bazinio kelio testavimas

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

6

Srauto grafų sudarymas

7

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

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

Ciklomatinis sudėtingumas

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

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

10

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

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

Valdymo struktūros testavimas

13

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

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

Ciklų testavimas

16

Ciklų testavimas

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

17

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

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

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

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

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

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

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

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

26

Objektiniai testavimo metodai

27

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

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

Tarpklasinių testavimo atvejų dizainas

30

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

32

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

Specializuotų aplinkų testavimas

34

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

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

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

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

Ačiū už dėmesį!

39

top related