TSCR -curs- Ionescu Augustin-Iulian CAPITOLUL 4 TSCR -curs- Ionescu Augustin-Iulian 4-2 Modelul W pentru dezvoltarea proiectelor analiza cerintelor specificatii proiectare arhitectura proiectare detaliata Start activitati testare Executie test acceptanta Planificare testare de sistem Depanare/ modificare Executie test de sistem Planificare.
Download ReportTranscript TSCR -curs- Ionescu Augustin-Iulian CAPITOLUL 4 TSCR -curs- Ionescu Augustin-Iulian 4-2 Modelul W pentru dezvoltarea proiectelor analiza cerintelor specificatii proiectare arhitectura proiectare detaliata Start activitati testare Executie test acceptanta Planificare testare de sistem Depanare/ modificare Executie test de sistem Planificare.
TSCR -curs- Ionescu Augustin-Iulian 2010 1 CAPITOLUL 4 2010 TSCR -curs- Ionescu Augustin-Iulian 4-2 Modelul W pentru dezvoltarea proiectelor analiza cerintelor specificatii proiectare arhitectura proiectare detaliata Start activitati testare Executie test acceptanta Planificare testare de sistem Depanare/ modificare Executie test de sistem Planificare testare de integrare Executie test de integrare Planificare testare pe componente Executie teste pe componenta Depanare/ modificare Depanare/ modificare Depanare/ modificare codificare Fig. 4.1 2010 TSCR -curs- Ionescu Augustin-Iulian 4-3 Nivele de testare Nivelul componenta Nivelul integrare Nivelul sistem Fig. 4.2 2010 TSCR -curs- Ionescu Augustin-Iulian 4-4 Platforma de testare Caz test 1 Caz test Test 2 driver ... Caz test n Test driver PC surogat 1 ... Produs testat PO Rezultate testare surogat k Inlocuitori Mediul de executie,monitoare, analizoare PC – punct comandă PO – punct observație Fig. 4.3 2010 TSCR -curs- Ionescu Augustin-Iulian 4-5 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 TSCR -curs- Ionescu Augustin-Iulian 4-6 Testarea componentelor Defecte 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 TSCR -curs- Ionescu Augustin-Iulian 4-7 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 TSCR -curs- Ionescu Augustin-Iulian 4-8 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. C1 T1 T1 C1 T2 C2 T3 C1 T2 C2 T3 C3 T4 T1 T2 C2 C3 C4 T3 T4 T5 Fig. 4.4 2010 TSCR -curs- Ionescu Augustin-Iulian 4-9 Integrarea top-down Este 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 TSCR -curs- Ionescu Augustin-Iulian 4-10 Integrarea top-down M1 P1) M1 M1 P8) surogat1 surogat2 surogat3 P5) surogat2 M2 surogat3 M2 M3 M3 M1 P2) surogat2 M2 surogat4 surogat3 M5 M6 M5 M8 surogat5 M6 M7 M8 M1 M1 P3) P6) surogat2 M2 M2 surogat3 surogat3 M3 surogat5 M5 M5 P4) M8 M1 surogat6 surogat2 M2 M6 surogat3 M1 P7) M2 M3 M4 surogat5 surogat7 2010 M5 M5 M8 M8 TSCR -curs- M6 Ionescu Augustin-Iulian 4-11 Integrarea bottom-up 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. 2010 TSCR -curs- Ionescu Augustin-Iulian 4-12 Integrarea bottom-up P1) D1 M4 M5 D2 D3 M6 M7 M8 M9 Cluster 1 Cluster 2 P2) M10 P3) M11 Cluster 3 M4 M3 M2 M5 M8 M5 M8 2010 TSCR -curs- M3 M2 D4 M4 M1 M6 M9 M6 M9 M7 M10 M11 M7 M10 M11 Ionescu Augustin-Iulian 4-13 Integrarea combinată (sandwich) 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 topdown. 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. 2010 TSCR -curs- Ionescu Augustin-Iulian 4-14 Integrarea combinată (sandwich) P1) M1 D1 S2 S1 P2) M4 M1 M5 D3 M6 M7 M8 M9 Cluster 1 Cluster 2 M10 M11 Cluster 3 S2 M2 P3) M4 D2 M1 M5 M3 M2 M8 M4 M5 M8 2010 TSCR -curs- M6 M9 M7 M10 Ionescu Augustin-Iulian M11 4-15 Testarea de regresie 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. 2010 TSCR -curs- Ionescu Augustin-Iulian 4-16 Testul fumului (smoke testing) 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. 2010 TSCR -curs- Ionescu Augustin-Iulian 4-17 Testul fumului (smoke testing) 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. 2010 TSCR -curs- Ionescu Augustin-Iulian 4-18