oo testov an obsah - cvut.cz...oo testov an radek ma r k cvut fel, k13132 october 2, 2014 radek ma r...

22
OO testov´ an´ ı Radek Maˇ ık ˇ CVUT FEL, K13132 October 2, 2014 Radek Maˇ ık ([email protected]) OO testov´ an´ ı October 2, 2014 1 / 55 Obsah 1 Kl´ ıˇ cov´ e OO vlastnosti ediˇ cnost ˇ ızen´ ı pˇ ıstupu Polymorfizmus 2 Testov´ an´ ı OO softwaru Typologie testov´ an´ ı Anom´ alie DU p´ ar˚ u Probl´ em polymorfizmu 3 Kategorie OO vad a anom´ ali´ ı rehled Vady/Anom´ alie 4 Testov´ an´ ı dˇ ediˇ cnosti, polymorfizmu a dynamick´ ych vazeb Vazebn´ ı sekvence ıklady 5 Krit´ eria OO testov´ an´ ı Krit´ eria Radek Maˇ ık ([email protected]) OO testov´ an´ ı October 2, 2014 2 / 55

Upload: others

Post on 19-Jan-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

OO testovanı

Radek Marık

CVUT FEL, K13132

October 2, 2014

Radek Marık ([email protected]) OO testovanı October 2, 2014 1 / 55

Obsah

1 Klıcove OO vlastnostiDedicnostRızenı prıstupuPolymorfizmus

2 Testovanı OO softwaruTypologie testovanıAnomalie DU paruProblem polymorfizmu

3 Kategorie OO vad a anomaliıPrehledVady/Anomalie

4 Testovanı dedicnosti, polymorfizmu a dynamickych vazebVazebnı sekvencePrıklady

5 Kriteria OO testovanıKriteria

Radek Marık ([email protected]) OO testovanı October 2, 2014 2 / 55

Klıcove OO vlastnosti Dedicnost

Dedicnost [AO08, AO10]

Umoznuje, aby spolecne vlastnosti mnoha trıd byly definovany vjedne trıde

Odvozena trıda ma vse, co ma jejı bazova trıda. Navıc muze:

vylepsit odvozene vlastnosti (prepsanım)omezit odvozene vlastnostipridat nove vlastnosti (rozsırenım)

Radek Marık ([email protected]) OO testovanı October 2, 2014 4 / 55

Klıcove OO vlastnosti Dedicnost

Dedicnost typu [AO08, AO10]

Deklarovany typ . . . typ specifikovany v deklaraci reference na objekt

Clock w1; // declared type Clock

Skutecny typ . . . typ skutecneho objektu

w1 = new Watch(); // actual type Watch

Metoda v Java

Metoda, ktera se vola, je nejnizsı verze metodydefinovane mezi skutecnym a deklarovanymtypem v hierarchii dedicnosti.

A

C

B

Radek Marık ([email protected]) OO testovanı October 2, 2014 5 / 55

Klıcove OO vlastnosti Dedicnost

Dedicnost podtypu a podtrıdy [AO08, AO10]

Jestlize B dedı z A, pak

Dedicnost podtypu . . . kterykoliv objekt typu B muze nahraditobjekt typu A.

Notebook ”je” specialnım typem pocıtace.nahraditelnost.

Dedicnost podtrıdy . . . objekty typu B nesmı byt pouzity jakonahrady za objekty typu A.

Objekty typu B nemusı byt ”typove kompatibilnı”.Stack dedı z Vector . . . pohodlne pro implementaci, ale stack nenıurcite vektor.

Radek Marık ([email protected]) OO testovanı October 2, 2014 6 / 55

Klıcove OO vlastnosti Rızenı prıstupu

Rızenı prıstupu (v Java) [AO08, AO10]

PackageClass 1

Class 5

Class 3

Class 2

Class 4

inheritance

Radek Marık ([email protected]) OO testovanı October 2, 2014 8 / 55

Klıcove OO vlastnosti Rızenı prıstupu

Rızenı prıstupu (v Java) [AO08, AO10]

PackageClass 1public members

Class 5

Class 3

Class 2

Class 4

inheritance

Radek Marık ([email protected]) OO testovanı October 2, 2014 9 / 55

Klıcove OO vlastnosti Rızenı prıstupu

Rızenı prıstupu (v Java) [AO08, AO10]

PackageClass 1public members

protected members

Class 5

Class 3

Class 2

Class 4

inheritance

Radek Marık ([email protected]) OO testovanı October 2, 2014 10 / 55

Klıcove OO vlastnosti Rızenı prıstupu

Rızenı prıstupu (v Java) [AO08, AO10]

PackageClass 1public members

default

protected members

Class 5

Class 3

Class 2

Class 4

inheritance

Radek Marık ([email protected]) OO testovanı October 2, 2014 11 / 55

Klıcove OO vlastnosti Rızenı prıstupu

Rızenı prıstupu (v Java) [AO08, AO10]

PackageClass 1public members

private members

default

protected members

Class 5

Class 3

Class 2

Class 4

inheritance

Radek Marık ([email protected]) OO testovanı October 2, 2014 12 / 55

Klıcove OO vlastnosti Polymorfizmus

Polymorfizmus [AO08, AO10]

Ta sama promenna muze mıt ruzne typy, ktere zavisı na behuprogramu.

Jestlize B dedı z A, potom objekt typu B muze byt pouzit tam, kdese ocekava objekt typu A.

Jestlize jak A tak B definujı tu samou metodu M (B prepisuje A),potom ten samy prıkaz muze volat jak A verzi M, tak i B verzi.

Radek Marık ([email protected]) OO testovanı October 2, 2014 14 / 55

Testovanı OO softwaru Typologie testovanı

Typy testovanı [AO08, AO10]

Testovanı intra-metod . . . testovanı v ramci jedne metody jednetrıdy.

Testovanı inter-metod . . . testovanı v ramci nekolika metod jednetrıdy.

Testovanı intra-trıdy . . . testovanı v ramci jedne trıdy.

obvykle pouzitım sekvencı volanı metod v ramci jedne trıdy.

Testovanı inter-trıd . . . testovanı nekolika trıd najednou.

overovanı moznostı integrace

Radek Marık ([email protected]) OO testovanı October 2, 2014 16 / 55

Testovanı OO softwaru Anomalie DU paru

DU pary a jejich mozne anomalie 1 [AO08, AO10]

Prepisujıcı metoda ma jinou def-mnozinu nez prepisovana metoda?

Radek Marık ([email protected]) OO testovanı October 2, 2014 18 / 55

Testovanı OO softwaru Anomalie DU paru

DU pary a jejich mozne anomalie 2 [AO08, AO10]

Prepisujıcı metoda ma jinou def-mnozinu nez prepisovana metoda?

Radek Marık ([email protected]) OO testovanı October 2, 2014 19 / 55

Testovanı OO softwaru Anomalie DU paru

DU pary a jejich mozne anomalie 3 [AO08, AO10]

Prepisujıcı metoda ma jinou def-mnozinu nez prepisovana metoda?

Radek Marık ([email protected]) OO testovanı October 2, 2014 20 / 55

Testovanı OO softwaru Anomalie DU paru

DU pary a jejich mozne anomalie 4 [AO08, AO10]

Prepisujıcı metoda ma jinou def-mnozinu nez prepisovana metoda?

Radek Marık ([email protected]) OO testovanı October 2, 2014 21 / 55

Testovanı OO softwaru Anomalie DU paru

DU pary a jejich mozne anomalie 5 [AO08, AO10]

Prepisujıcı metoda ma jinou def-mnozinu nez prepisovana metoda?

Radek Marık ([email protected]) OO testovanı October 2, 2014 22 / 55

Testovanı OO softwaru Problem polymorfizmu

Anomalie polymorfizmu 1 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 24 / 55

Testovanı OO softwaru Problem polymorfizmu

Anomalie polymorfizmu 2 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 25 / 55

Testovanı OO softwaru Problem polymorfizmu

Anomalie polymorfizmu 3 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 26 / 55

Kategorie OO vad a anomaliı Prehled

Mozne vady OO programu [AO08, AO10]

Slozitost vnika mnozstvım propojenı komponent.

Staticky determinismus mizı - mnoho vad je mozne detekovatpouze za behu.

Dedicnost a polymorfizmus umoznuje vertialnı a dynamickouintegraci.

Agregacnı vazby a vazby uzitı jsou mnohem slozitejsı.

Navrhari ne vzdy zachazejı opatrne s viditelnostı dat a metod.

Radek Marık ([email protected]) OO testovanı October 2, 2014 28 / 55

Kategorie OO vad a anomaliı Prehled

OO vady a anomalie [AO08, AO10]

Zkratka Vada/Anomalie

ITU* Nekonzistetnı uzitı typu

SDA* Anomalie definice stavu

SDIH* Nekonzistentnı definice stavu

SDI Nespravna definice stavu

IISD Neprıma nekonzistentnı definice stavu

ACB1* Anomalnı chovanı konstrukce (1)

ACB2 Anomalnı chovanı konstrukce (2)

IC Neuplna konstrukce

SVA* Anomalie viditelnosti stavu

Radek Marık ([email protected]) OO testovanı October 2, 2014 29 / 55

Kategorie OO vad a anomaliı Vady/Anomalie

Nekonzistetnı uzitı typu (ITU) [AO08, AO10]

neprepisuje se (nejedna se o polymorfizmus).

C rozsiruje T a C pridava nove metody (rozsırenı

objekt je pouzit ”jako C”, potom jako T , potom jako C

metody T mohou privest objekt do stavu nekonzistentnım s C

Radek Marık ([email protected]) OO testovanı October 2, 2014 31 / 55

Kategorie OO vad a anomaliı Vady/Anomalie

Anomalie definice stavu (SDA) [AO08, AO10]

X rozsırı W , a X prepisuje nektere z metod.

Prepisujıcı metody v X nenadefinujı nektere promenne, ktere jsoudefinovany prepsanymi metodami v W

Selhanı pro objekt Y pri zavolanı m() nasledovanem n()

W :: m() definuje v a W :: n() pouzıva v

X :: n() pouzıva v

Y :: m() nedefinuje v

Radek Marık ([email protected]) OO testovanı October 2, 2014 32 / 55

Kategorie OO vad a anomaliı Vady/Anomalie

Nekonzistence definice stavu (SDIH) [AO08, AO10]

Prekrytı promenne, mozna nahodne.

Jestlize promenna v potomku je definovana, verze v predchudcinemusı byt.

Selhanı pro objekt Y pri zavolanı m() nasledovanem n()

Y prepıse W ) verzi v

Y :: m() definuje Y :: v

X :: n() pouzıva v

Radek Marık ([email protected]) OO testovanı October 2, 2014 33 / 55

Kategorie OO vad a anomaliı Vady/Anomalie

Anomalie v chovanı konstruktoru (ACB1) [AO08, AO10]

Konstruktor W vola metodu f ().

Potomek W , X , prepıse f ().

X :: f () pouzıva promenne, ktere by mely byt definovany vkonstruktoru X

Selhanı pri konstrukci

Kdyz je konstruovan objekt typu X , W () seprovadı pred X :: ()

Kdyz W () vola X :: f (), pouzije se x , ale tezatım nebyla dana hodnota!

Radek Marık ([email protected]) OO testovanı October 2, 2014 34 / 55

Kategorie OO vad a anomaliı Vady/Anomalie

Anomalie ve viditelnosti stavu (SVA) [AO08, AO10]

Privatnı promenna v je deklarovana v predchudci W a v jedefinovana W :: m().

X rozsiruje W a Y rozsiruje X .

Y prepisuje m() a vola W :: m() k nadefinovanı v

Selhanı

X :: m() je pridana pozdeji.

Y :: m() nemuze dale jiz volatW :: m()!

Radek Marık ([email protected]) OO testovanı October 2, 2014 35 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Vazebnı sekvence

Vazebnı sekvence [AO08, AO10]

Pary volanı metod v ramci jedne testovane metody:

spolecny kontext instance.mnozina stavovych promennych, ktere jsou referencovany obemametodami.obsahuje alespon jednu vazebnı cestu mezi volanı obou metodvzhledem k dane stavove promenne.

Reprezentujı mozne interakce stavovych prostoru mezi volanymimetodami vzhledem k volajıcı metode.

Pouzıva se k identifikaci bodu integrace a testovacıch pozadavku.

Radek Marık ([email protected]) OO testovanı October 2, 2014 37 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Vazebnı sekvence

Typy Def-Use paru [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 38 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Vazebnı sekvence

Testovanı zalozene na vazbach [AO08, AO10]

Integrace nastava pomocı vazeb softwarovych artefaktu.

Radek Marık ([email protected]) OO testovanı October 2, 2014 39 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Vazebnı sekvence

Mnozina polymorfnıch volanı [AO08, AO10]

PCS

mnozina metod, kteremohou byt potencialneprovedeny jako vysledekvolanı metody v ramcidane instance kontextu.

pcs(o :: m) = {W ::m,Y :: m,X :: m}

Radek Marık ([email protected]) OO testovanı October 2, 2014 40 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Prıklady

Prıklad vazebnı sekvence 1 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 42 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Prıklady

Prıklad vazebnı sekvence 1 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 43 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Prıklady

Prıklad vazebnı sekvence 1 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 44 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Prıklady

Prıklad vazebnı sekvence 1 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 45 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Prıklady

Prıklad vazebnı sekvence 2 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 46 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Prıklady

Prıklad vazebnı sekvence 2 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 47 / 55

Testovanı dedicnosti, polymorfizmu a dynamickych vazeb Prıklady

Prıklad vazebnı sekvence 2 [AO08, AO10]

Radek Marık ([email protected]) OO testovanı October 2, 2014 48 / 55

Kriteria OO testovanı Kriteria

Cıle testovanı [AO08, AO10]

Testujeme, jak na sebe vzajemne pusobı metoda a instance vazanana objekt o:

interakce skrze vazebnı sekvence.

Potreba uvazit mnozinu interakcı:Mozne typy objektu oKtere metody mohou byt ve skutecnosti provedeny (mnozinypolymorfnıch volanı).

Testujı se vsechny vazby se vsemi typy.

Radek Marık ([email protected]) OO testovanı October 2, 2014 50 / 55

Kriteria OO testovanı Kriteria

Sekvence vsech vazeb [AO08, AO10]

All-Coupling-Sequences (ACS)

Pro vsechny vazebnı sekvence Sj ,k v f (),

existuje alespon jeden testovacı prıpad t takovy, ze existuje vazebnıcesta indukovana Sj ,k takova, ze je podcestou behove trasy f (t)

Alespon jedna vazebnı cesta musı byt provedena.

Neuvazuje ani dedicnost ani polymorfismus.

Radek Marık ([email protected]) OO testovanı October 2, 2014 51 / 55

Kriteria OO testovanı Kriteria

Vsechny poly-trıdy [AO08, AO10]

All-Poly-Classes (APC)

Pro vsechny vazebnı sekvence Sj ,k v f () a

pro kazdou trıdu rodiny typu definovanou kontextem Sj ,k ,

existuje alespon jeden testovacı prıpad t takovy, ze existuje vazebnıcesta p indukovana Sj ,k takova, ze je podcestou behove trasy f (t)

Zahrnuje kontexty instacı pri volanı.

Nejmene jeden test for kazdy typ objektu.

Radek Marık ([email protected]) OO testovanı October 2, 2014 52 / 55

Kriteria OO testovanı Kriteria

Vsechny vazebnı Def-Use [AO08, AO10]

All-Coupling-Defs-Uses (ACDU)

Pro kazdou vazebnı promennou v

kazde vazebnı sekvence Sj ,k v f (),

existuje alespon jeden testovacı prıpad t takovy, ze existuje vazebnıcesta p indukovana Sj ,k takova, ze je podcestou behove trasy f (t)

Kazda poslednı definice vazebnı promenne dosahuje na vsechny svaprvnı pouzitı.

Neuvazuje dedicnost a polymorfismus.

Radek Marık ([email protected]) OO testovanı October 2, 2014 53 / 55

Kriteria OO testovanı Kriteria

Vsechny polymorfnı vazebnı Def-Use [AO08, AO10]

All-Poly-Coupling-Defs-Uses (APDU)

Pro kazdou vazebnı promennou v ,

pro kazdou trıdu rodiny typu definovanou kontextem Sj ,k ,

kazde vazebnı sekvence Sj ,k v f (),

pro kazdy uzel m, ktery ma poslednı definici v a

kazdy uzel n, ktery ma prvnı pouzitı v ,

existuje alespon jeden testovacı prıpad t takovy, ze existuje vazebnıcesta p indukovana Sj ,k takova, ze je podcestou behove trasy f (t)

Kazda poslednı definice vazebnı promenne dosahuje na vsechny svaprvnı pouzitı pro kazdy mozny typ.

Pracuje s dedicnosti a polymorfismem.

Uvazuje definice a pouzitı promennych.

Kombinuje predchozı kriteria.

Radek Marık ([email protected]) OO testovanı October 2, 2014 54 / 55

Kriteria OO testovanı Kriteria

Literatura I

V teto prezentaci je pouzita rada obrazku z nıze uvedenych puvodnıchanglickych prednasek ( c©Ammann and Offutt).

Paul Ammann and Jeff Offutt.

Introduction to Software Testing.Cambridge University Press, Cambridge, UK, first edition, February 2008.ISBN 0-52188-038-1.

Paul Ammann and Jeff Offutt.

Introduction to software testing, powerpoint slides, August 2010.

Radek Marık ([email protected]) OO testovanı October 2, 2014 55 / 55