18
Testiranje softvera ETF BEOGRAD, 2019/2020. VEŽBE #10, ASISTENT: DR DRAŽEN DRAŠKOVIĆ

Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

  • Upload
    others

  • View
    18

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Testiranje softveraETF BEOGRAD, 2019/2020.

VEŽBE #10, ASISTENT: DR DRAŽEN DRAŠKOVIĆ

Page 2: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Testiranje objektnoorijentisanog softveraOBJECT-ORIENTED TESTING

2

Page 3: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Testiranje OO softvera

� OO softver: najmanja jedinica testiranja je klasa tj. objekti koji obuhvataju podatke i funkcijeza manipulaciju tim podacima

� Testiranje (unutar) klase za OO softver je ekvivalent jediničnog testiranja kod konvencionalnogsoftvera

� Dva glavna nivoa:

� testiranje unutar klase (eng. intra-class testing), koje odgovara jediničnom testiranju kod konvencionalnogproceduralnog softvera

� međuklasno testiranje (eng. inter-class testing), koje odgovara integracionom testiranju kod konvencionalnogsoftvera

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

3

Page 4: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

OO softver - glavne karakteristike

� Ponašanje zavisno od stanja

� Enkapsulacija

� Nasleđivanje

� Polimorfizam i dinamičko vezivanje

� Apstraktne klase

� Obrada izuzetaka

� Konkurentnost

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

4

Page 5: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta

� Dat je softver za uređivanje teksta, realizovan na programskom jeziku Java. Cilj date implementacije je da u tekstualnom fajlu (sa ekstenzijom .txt), koji se čita kao argument poziva programa ili kao ime fajla sa standardnog ulaza, pronađe reči (dve ili više) koje se ponavljaju. Za svaku od takvih reči potrebno je napisati koje su reči u pitanju, u kojim redovima teksta su pronađene i na kojim pozicijama u okviru tihredova.

� Realizovati:

� a) Graf kontrole toka za metodu koja vrši obradu fajla (i eventualno druge metode koje poziva).

� b) Graf stanja i prelaza ovog softverskog sistema.

� c) Test primere koje obuhvataju sva stanja i prelaze iz grafa pod b).

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

5

Page 6: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (1)

� Konstrukcija konačnog automata (FSM) - graf kontrole toka glavnog programa i 3 preostale metode

� Nije u potpunosti FSM:

� Čvorovi nisu stanja

� Metode moraju da vrate rezultat na mestima poziva tih metoda(grafovi onda sadrže ugrađene nedeterminizme)

� Implementacija mora biti kompletno završena pre nego što pređemo da realizujemo graf(naš cilj: pripremiti testove što je ranije moguće)

� Nesrazmernost grafa veličini softvera => Komplikovan graf

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

6

Page 7: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (2)

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

7

Metod jeSeparator (char)

Metod proveriDuple (int)

Metod obradaFajla (BufferedReader)

2IF

3

1

true

4

false

5 IF

true

6 7

8

false

Glavni programmain

1

2While

15

false

3

5

4 for

true

true

6 if

7 8

true

9 if

10

11

12 end_for

13

14 end_while

9

1 if

2

true

3 if

false

4 if

5 6

7

true false

true

8

false

9

1

for

2 if

true

3

true

4

end_for

false

5

false

Page 8: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (3) - b

� FSM baziran na softverskoj strukturi prikazuje opšti tok procesiranja u programu (apstrahovani graf kontrole toka), što predstavlja glavnu prednost takvog konačnog automata

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

8

KRAJ Čitaj_NovuLiniju

Provera_duplih

Čitaj_NovKarakter

Poslednji je bio separator Ima duplikata

Nema duplikata

linija == EOF

linija != EOF

karakter == separator || karakter == EOL

karakter != separator

poslednjiSeparator == TRUE

tekucaRec==prethodnaRec

tekucaRec != prethodnaRecčitaj

sledeći karakter

čitaj sledeći karakter

čitaj sledeći karakter

IF dostigao kraj linije (EOL)

Page 9: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (4)

� Modelovanje stanja promenljivih:

� Prvi korak je da odredimo koje promenljive mogu učestvovati u stanjima, zatim izabrati one relevantne za FSM, na primer globalne i klasne promenljive

� Klasa Uredjivac definiše 4 promenljive: poslednjiSeparator, tekucaRec, prethodnaRec i separatori. Promenljiva separatori je definisana na nivou klase, pa ne treba da bude odabrana kao deo stanja.

� Teoretski: svaka kombinacija ove 3 promenljive definiše različito stanjeU praksi: beskonačan broj stanja. Na primer promenljive tekucaRec i prethodnaRec su tekstualni podaci i imaju neograničen skup vrednosti.

� Rešenje: identifikovati vrednosti / opsege vrednosti koji će biti zastupljeni kao stanja

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

9

Page 10: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (5)

� Stanja:

� tekucaRec: nedefinisano, reč

� prethodnaRec: nedefinisano, ista_reč, različita_reč

� poslednjiSeparator: true, false

� gde su reči: reč, ista_reč i različita_reč, promenljive tekstualnog tipa (string)

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

10

Page 11: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (6)

� 1. (nedefinisano, nedefinisano, true)

� 2. (nedefinisano, nedefinisano, false)

� 3. (nedefinisano, ista_reč, true)

� 4. (nedefinisano, ista_reč, false)

� 5. (nedefinisano, različita_reč, true)

� 6. (nedefinisano, različita_reč, false)

� 7. (reč, nedefinisano, true)

� 8. (reč, nedefinisano, false)

� 9. (reč, ista_reč, true)

� 10. (reč, ista_reč, false)

� 11. (reč, različita_reč, true)

� 12. (reč, različita_reč, false)

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

11

Page 12: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (7)

� Konačni graf stanja i prelaza, za 3 promenljive (tekucaRec, prethodnaRec, poslednjiSeparator) izgleda ovako:

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

12

1nedefinisanonedefinisano

true8

rečnedefinisano

false

10reč

ista_rečfalse

12reč

različita_rečfalse

11reč

različita_rečtrue

9reč

ista_rečtrue

Page 13: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 1 - Uređivač teksta - rešenje (8)

� Poslednja metoda za dobijanje FSM zasniva se na eksplicitinim zahtevima ili formalnoj specifikaciji kojaopisuje ponašanje tog softvera, a koju testeru dostavlja projektant softvera (na primer UML dijagramstanja). Za posmatrani program, ovakav FSM mogao bi da ima sledeći izgled:

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

13

čitaj karakter / karakter == EOF

čitaj karakter / karakter != separator &&

karakter != EOLIzmeđu reči Unutar reči

čitaj karakter / karakter != separator &&

karakter != EOL

čitaj karakter / karakter == separator ||

karakter == EOLK R A J

čitaj karakter / karakter == EOF

Završena reč

Duplikat pronađenDuplikat

nije pronađen

- / prethodna == tekuća - / prethodna != tekuća

čitaj karakter / karakter == separator ||

karakter == EOL

Page 14: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 2 - Testiranje redefinisanih metoda

� Dat je segment jednog programa i UML klasni dijagram, koji prikazuje klase koje se koriste u prikazanoj metodi f. V i X su izvedene klase iz klase W, klasa V redefiniše (eng. overrides) metodu m(), a klasa X redefiniše metode m() i n(). Minus (-) označava atribut sa privatnim pravom pristupa, a plus (+) označavajavno pravo pristupa. Komentarisati šta je potrebno testirati u ovom programu, da bismo bili sigurni da se sve metode izvršavaju korektno.

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

14

1 void f(boolean b)

2 {

3 W obj;

4 ...

5 if(b)

6 obj = new V();

7 else

8 obj = new W();

9 ...

10 obj.m();

11 }

W

- v

+ m ()+ n ()

V

- x

+ m ()

X

+ m ()+ n ()

Page 15: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 2 - Testiranje redefinisanih metoda - Rešenje

� U slučaju kada je ulazni argument metode f(boolean), b = true, izvršiće se linija 6, odnosno pozvaće sekonstruktor V(), pa će stvarni tip, u liniji 10, biti V, i tada će se pozvati metoda m(), koja je redefinisana uklasi V. U slučaju kada je ulazni argument metode f(boolean), b = false, izvršiće se linija 8, odnosno pozvaćese konstruktor W (konstruktor osnovne klase), pa je zaključak da će se tada, u liniji 10, kao stvarni tippozvati objekat nad klasom W, odnosno izvršiće se metoda m(), koja je realizovana u osnovnoj klasi W.

� Redefinisana metoda m() u izvedenoj klasi X se u ovom zadatku neće izvršiti, bez obzira na odabrani testprimer.

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

15

Page 16: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 3 - Nasleđivanje i Yo-Yo graf (1)

� Neka je data sledeća struktura programa sa 3 realizovane klase: A, B i C. Promenljive koje suoznačene sa # imaju zaštićeno (protected) pravo pristupa, a date su i metode sa javnim (public)pravom pristupa koje su označene sa +. Korena klasa A sadrži stanja za 4 promenljive i 6 metoda.Promenljive su zaštićene što znači da su dostupne u klasama potomcima klase A, odnosno uklasama B i C. Klasa B deklariše stanje 1 promenljive i 3 metode, a klasa C samo 3 metode. Strelicena slici pokazuju važnost metoda: metoda B::h() redefiniše (nadjačava) metodu A::h(), metodaB::i() redefiniše metodu A::i(), a metoda C::i() redefiniše metodu B::i(), C::j() redefiniše A::j(), i C::l()redefiniše A::l(). Tabela pored dijagrama prikazuje stanje definisanih promenljivih i u kojimmetodama se koriste te promenljive.

� U implementaciji klase A, pretpostavimo da metoda d() poziva metodu g(), g() poziva h(), h()poziva i() i i() poziva j(). Dalje pretpostavimo da kod implementacije B, metoda h() poziva metodui(), i() poziva metodu i() iz svoje roditeljske klase (A), a k() poziva l(). Konačno, kod C imamometodu i() koja poziva roditeljsku metodu i() iz klase B, i metoda j() koja poziva k().

� Nacratati yo-yo graf za opisanu specifikaciju programa i klasni dijagram sa slike. Definicije iupotrebe promenljivih unutar metoda pojedinih klasa date su u tabeli.

16

A

# t# u# v# w

+ d ()+ g ()+ h ()+ i ()+ j ()+ l ()

B

# x

+ h ()+ i ()+ k ()

C

+ i ()+ j ()+ l ()

Page 17: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 3 - Nasleđivanje i Yo-Yo graf (2)17

Metod Definicije Upotrebe

A :: h( ) { A :: u, A :: w }

A :: i( ) { A :: u }

A :: j( ) { A :: v } { A :: w }

A :: l( ) { A :: v }

B :: h( ) { B :: x }

B :: i( ) { B :: x }

C :: i( ) { C :: y }

C :: j( ) { C :: y }

C :: l( ) { A :: v }

A

# t# u# v# w

+ d ()+ g ()+ h ()+ i ()+ j ()+ l ()

B

# x

+ h ()+ i ()+ k ()

C

+ i ()+ j ()+ l ()

Page 18: Testiranje softvera - SI3TS vezbe 10si3ts.etf.rs/materijali/vezbe/04_OOP/SI3TS_vezbe_10_OOP.pdfZadatak1 -Uređivač teksta Dat je softver za uređivanje teksta, realizovan na programskom

Zadatak 3 - Nasleđivanje i Yo-Yo graf - Rešenje

Testiranje softvera, Elektrotehnički fakultet Univerziteta u Beogradu

18

A

+ d ()+ g ()+ h ()+ i ()+ j ()+ l ()

B

+ h ()+ i ()+ k ()

C

+ i ()+ j ()+ l ()

A

B

C

d() g() h() i() j() l()

h() i() k()

i() j() l()

A

B

C

d() g() h() i() j() l()

h() i() k()

i() j() l()

A

B

C

d() g() h() i() j() l()

h() i() k()

i() j() l()