2010 1TSCR -curs- Ionescu Augustin-Iulian
2010 4-2TSCR -curs- Ionescu Augustin-Iulian
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
Nivele de testare
2010 4-4TSCR -curs- Ionescu
Augustin-Iulian
Nivelul componenta Nivelul integrare Nivelul sistem
Fig. 4.2
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
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
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
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
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
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
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
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.
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
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.
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
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.
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.
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.