TSCR04 2009-2010

18
2010 1 TSCR -curs- Ionescu Augustin-Iulian

description

testing course

Transcript of TSCR04 2009-2010

Page 1: TSCR04 2009-2010

2010 1TSCR -curs- Ionescu Augustin-Iulian

Page 2: TSCR04 2009-2010

2010 4-2TSCR -curs- Ionescu Augustin-Iulian

Page 3: TSCR04 2009-2010

Modelul W pentru dezvoltarea proiectelor

2010 4-3TSCR -curs- Ionescu

Augustin-Iulian

analiza cerintelor

specificatii

proiectare arhitectura

proiectare detaliata

Start activitati testare

Planificare testare de sistem

Planificare testare de integrare

Planificare testare pe componente

codificare

Executie test acceptanta

Executie test de sistem

Executie test de integrare

Executie teste pe componenta

Depanare/modificare

Depanare/modificare

Depanare/modificare

Depanare/modificare

Fig. 4.1

Page 4: TSCR04 2009-2010

Nivele de testare

2010 4-4TSCR -curs- Ionescu

Augustin-Iulian

Nivelul componenta Nivelul integrare Nivelul sistem

Fig. 4.2

Page 5: TSCR04 2009-2010

Platforma de testare

2010 4-5TSCR -curs- Ionescu

Augustin-Iulian

Produs testat

Mediul de executie,monitoare, analizoare

Test driver

surogat 1

surogat k

...

Test driverCaz test 1

Caz test 2 ... Caz test

n

Rezultate testare

Inlocuitori

PC

PO

PC – punct comandă PO – punct observație

Fig. 4.3

Page 6: TSCR04 2009-2010

Testarea componentelor (Unit testing)

Obiectiv:

Depistarea existenței unor defecte la nivel de unitate funcțională (componentă)

Avantaje:

Dimensiunea componentelor este suficient de mică pentru a permite ulterior localizarea şi eliminarea ȋntr-un timp acceptabil a defectelor care au provocat eşecul.

Dimensiunea mică a componentelor permite generarea sistematică a unor cazuri de test care să acopere principalele defecte care ar putea să apară. Acest lucru permite automatizarea procesului de testare.

Se elimină confuziile legate de apariția şi propagarea unor defecte ȋn diverse componente.

2010 4-6TSCR -curs- Ionescu

Augustin-Iulian

Page 7: TSCR04 2009-2010

Testarea componentelorDefecte tipice puse ȋn evidență:

Nu se ține cont de precedența operatorilor;

Utilizarea greşită a parantezelor;

Nume greşite ale obiectelor programului;

Compararea unor date de tipuri necompatibile;

Lipsa inițializării sau inițializare greşită;

Utilizarea unei precizii insuficiente;

Utilizarea greşită a unor operatori;

Ignorarea particularităților diverselor variante/versiuni de compilator/interpretor;

2010 4-7TSCR -curs- Ionescu

Augustin-Iulian

Page 8: TSCR04 2009-2010

Testarea de integrare (integration testing)Obiectiv:

Testeaza interfața ȋntre componente pentru a pune ȋn evidență defecte ȋn transferul de informație ȋntre componente.

Abordări ale testării de integrare:

Integrarea incrementală;

Integrarea top-down;

Integrare bottom-up;

Testarea de regresie;

Smoke testing;

Integrarea sandwich.

Observatie! Indiferent de abordare, integrarea trebuie planificată cu grijă pentru a minimiza efortul de scriere a driverelor şi surogatelor.

2010 4-8TSCR -curs- Ionescu

Augustin-Iulian

Page 9: TSCR04 2009-2010

Integrarea incrementalăIntegrarea se face pas cu pas, integrând la primul pas două componente, apoi, după ce toate testele au fost realizate şi defectele eliminate se adaugă altă componentă, se refac toate testele anterioare, se adaugă noi teste şi asa mai departe până când cu testele considerate nu mai poate fi pus ȋn evidență nici un defect.

2010 4-9TSCR -curs- Ionescu

Augustin-Iulian

C1

C2

T1

T3

T2

C1

C2

T1

T3

T2

C3 T4

C1

C2

T1

T3

T2

T4

C4T5

C3

Fig. 4.4

Page 10: TSCR04 2009-2010

Integrarea top-downEste o variantă a integrării incrementale ȋn care se porneşte de la programul principal şi se adaugă mereu componente de pe nivelele imediat inferioare până când tot programul este testat.

Există două strategii posibile:Integrarea ȋn adâncime (depth-first) - Fig. 4.5;

Integrarea pe nivele ale arhitecturii (breadth-first) - Fig.4.6;

Paşii procesului de integrare:Programul principal joaca rolul de test driver si se introduc surogate pentru fiecare din componentele direct subordonate acestuia.

În funcție de strategia aleasă, la fiecare etapă un surogat este ȋnlocuit cu o componentă reală şi surogatele aferente acesteia.

Pentru fiecare componenta nou integrata se realizeaza testele planificate.

Numai după efectuarea tuturor testelor propuse, se trece la ȋnlocuirea următorului surogat cu o componentă reală.

Se efectuează teste de regresie pentru a pune ȋn evidență eventuale defecte datorate ultimei componente integrate.

2010 4-10TSCR -curs- Ionescu

Augustin-Iulian

Page 11: TSCR04 2009-2010

Integrarea top-down

2010 4-11TSCR -curs- Ionescu

Augustin-Iulian

surogat1

M1

surogat3surogat2

M1

surogat3surogat2

P1)

P2)

M2

surogat5surogat4

M1

surogat3surogat2

P3)

M2

surogat5

surogat6

M5

M1

surogat3surogat2P4)M2

surogat5

M5

M8

M1

surogat3surogat2P5)M2

M5

M8

M6

M1

surogat3

P6)

M2

M5

M8

M6

M3

M1

surogat7

P7)M2

M5

M8

M6

M3 M4

M7

M1

P8)

M2

M5

M8

M6

M3 M3

Page 12: TSCR04 2009-2010

Integrarea bottom-up

2010 4-12TSCR -curs- Ionescu

Augustin-Iulian

Este o variantă a integrării incrementale ȋn care se porneşte de la componentele situate pe cele mai de jos nivele ȋn structura programului.

Paşii procesului de integrare:Componentele de la nivelul inferior se reunesc ȋn clustere care realizează subfuncții bine precizate.

Pentru fiecare cluster sunt scrise programe driver care gestionează introducerea datelor de test şi extragerea rezultatelor.

Se testează fiecare cluster.

Se elimină driverele şi se integrează ȋn cluster componente de la nivelul superior, efectuând şi testele de regresie corespunzatoare.

Procesul se reia până când toate componentele au fost integrate.

Page 13: TSCR04 2009-2010

Integrarea bottom-up

2010 4-13TSCR -curs- Ionescu

Augustin-Iulian

M8

M4 M5

D1

M6

M9

D2

M7

M10 M11

D3P1)

M8

M4 M5

M2

M6

M9

M7

M10 M11

P2)

M3

D4

M8

M4 M5

M2

M6

M9

M7

M10 M11

P3)

M3

M1

Cluster 1 Cluster 3Cluster 2

Page 14: TSCR04 2009-2010

Integrarea combinată (sandwich)

2010 4-14TSCR -curs- Ionescu

Augustin-Iulian

Este o variantă a integrării incrementale ȋn care se combina cele doua metode de integrare prezentate anterior pentru a mari eficiența testării prin creşterea paralelismului ȋn operațiile de testare.

Paşii procesului de integrare:Componentele de la nivelul inferior se reunesc ȋn clustere care realizează subfuncții bine precizate.

Pentru fiecare cluster sunt scrise programe driver care gestionează introducerea datelor de test şi extragerea rezultatelor.

Se testează fiecare cluster.

Pentru componentele de la nivelul superior testarea se face prin metoda top-down.

Se elimină driverele şi surogatele şi se integrează toate componentele testate anterior.

Observatie! Avantajele metodei sunt legate de abilitatea planificării operațiilor de testare ȋn aşa fel incât să se minimizeze necesarul de surogate şi drivere şi să crească paralelismul operațiilor de testare/integrare.

Page 15: TSCR04 2009-2010

Integrarea combinată (sandwich)

2010 4-15TSCR -curs- Ionescu

Augustin-Iulian

M8

M4 M5

D1

M6

M9

D2

M7

M10 M11

D3P1)

M8

M4 M5

M2

M6

M9

M7

M10 M11

P3)

M3

M1

Cluster 1 Cluster 3Cluster 2

S1 S2

M1

M2

P2) M1

S2

M8

M4 M5

Page 16: TSCR04 2009-2010

Testarea de regresie

2010 4-16TSCR -curs- Ionescu

Augustin-Iulian

Este un proces prin care se verifică dacă o modificare introdusă ȋntr-o componentă, indiferent de cauză, nu afectează funcționalitatea acesteia sau a ȋntregului program.

Setul de teste de regresie conține trei clase de teste:

Teste adiționale orientate pe anumite funcții realizate de program.

Teste care să verifice toate funcțiile realizate de program.

Teste concentrate pe componentele modificate.

Page 17: TSCR04 2009-2010

Testul fumului (smoke testing)

2010 4-17TSCR -curs- Ionescu

Augustin-Iulian

Acest tip de test are ca scop sa puna in evidenta daca un produs este functional inainte de a trece la realizarea unor teste detaliate.

În hardware testul constă ȋn a pune sub tensiune un circuit nou sau ȋn care tocmai s-a ȋnlocuit/reparat o componentă. Dacă nu iese fum, produsul a trecut testul.

În software termenul descrie procesul de validare a modificărilor de cod ȋnainte de a trece la executarea setului de teste propuse pentru programul respectiv. Este o metodă foarte eficientă, prin care se pun ȋn evidență cu un minim de efort defectele grosolane.

Testele din aceasta categorie sunt teste usoare, cu timp de execuție mic şi sunt focalizate pe modificările introduse.

Fac parte din categoria white-box deoarece necesită cunoaşterea codului. Aveasta implică o bună colaborare ȋntre programatori şi testori.

Trecerea acestui test nu garantează calitatea impusă produsului, deci nu elimină celelalte categorii de teste.

Page 18: TSCR04 2009-2010

Testul fumului (smoke testing)

2010 4-18TSCR -curs- Ionescu

Augustin-Iulian

Teste adiționale orientate pe anumite funcții realizate de program.

Teste care să verifice toate funcțiile realizate de program.

Teste concentrate pe componentele modificate.