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