This is an old revision of the document!
Testarea de integrare este un tip de testare în care două sau mai multe componente diferite ale unei aplicații software sunt testate împreună pentru a valida corectitudinea interacțiunii dintre acestea. Testarea de integrare este realizată de obicei după testarea unitară și ajută la identificarea timpurie a defectelor aplicației pe parcursul ciclului de dezvoltare.
Piramida de Testare este un framework popular care ilustrează proporția diferitelor tipuri de teste într-o strategie de testare software. Ideea este să se concentreze resursele pe automatizarea testelor la niveluri inferioare (teste unitare și de integrare) și să se minimizeze testele E2E (end-to-end), care sunt mai costisitoare.
Cele 3 niveluri ale piramidei sunt:
Există două abordări principale:
1. Testarea de Integrare Big Bang
În această abordare, toate modulele sunt integrate și testate simultan, ca un întreg.
Avantaje:
Dezavantaje:
Recomandări:
2. Testarea de Integrare Incrementală
Modulele cu logică apropiată sunt grupate și testate treptat, nu toate simultan. Procesul continuă până când toate modulele sunt integrate și testate.
Avantaje:
Dezavantaje:
Testarea incrementală poate fi împărțită în:
Componente de nivel scăzut: funcții simple, structuri de date. Componente de nivel înalt: management utilizatori, procesare comenzi, mecanisme de securitate.
Exemplu comparativ (site eCommerce): Aspect Module Low-level Module High-level Complexitate Funcționalități simple Multifuncționale Scop Sarcini specifice Funcționalități complexe Granularitate Mici, modulare Mari, integrate Exemple Validare input, conexiune DB, cereri HTTP Catalog produse, coș cumpărături, procesare plăți 1. Testarea Bottom-up
Se începe cu modulele de jos și se urcă treptat. De exemplu: de la „tricouri” → „haine bărbați” → „îmbrăcăminte”.
Când să o folosești:
Complexitatea este în componentele de jos
Se dezvoltă incremental
Localizarea defecțiunilor este esențială
Componentele superioare nu sunt încă dezvoltate
2. Testarea Top-down
Se pornește de la modulele de sus către cele de jos. Oferă o imagine de ansamblu devreme în proiect.
Când să o folosești:
Funcționalitățile critice sunt în componentele de sus
Se dorește simularea interacțiunii utilizatorului
Modulele de jos sunt stabile
Se dorește validarea rapidă a funcționalităților vizibile
3. Testarea Hibridă (Sandwich)
Se combină top-down și bottom-up.
Avantaje:
Flexibilitate în funcție de proiect
Verificarea simultană a componentelor de sus și jos
Dezavantaje:
Planificare și coordonare complexă
Necesită comunicare eficientă în echipă
Dificultate în schimbarea între metodele de integrare
Strategia “Big Bang” constă în testarea simultană a tuturor componentelor aplicației, astfel încât să se obțină un sistem complet. Scopul acestei strategii este de a verifica funcționarea aplicației ca întreg și de a identifica defecte apărute din interacțiunea tuturor modulelor. Această abordare prezintă un efort mai redus de planificare, dar este practică doar pentru sisteme de dimensiuni și complexitate mică, fiind dificilă izolarea și diagnosticarea tuturor tipurilor de erori.
Strategia “Bottom-Up” constă în testarea incrementală a aplicației, astfel încât testarea modulelor de nivel inferior precede testarea modulelor de nivel superior. În acest tip de abordare se testează interacțiunea dintre module ale aplicației, grupate în clustere, pornind de la modulele cele mai de jos, peste care se adaugă incremental module de la nivele superioare, până ce se obține o testare completă a sistemului. Strategia “Bottom Up” necesită ca modulele inferioare să fie complete înainte de a se începe testarea de integrare, ceea ce întârzie testarea sistemului în procesul de dezvoltare, dar aduce o eficacitate sporită a detectării defectelor.
Strategia “Top-Down” constă în testarea incrementală a aplicației, astfel încât testarea modulelor de nivel superior precede testarea modulelor de nivel inferior. Modulele aplicației sunt grupate și testate de sus in jos, până ce se obține o testare completă a sistemului. Aceasta abordare nu necesită ca modulele inferioare să fie complete, funcționalitatea acestora fiind imitată de module stub, ceea ce permite ca testarea să poată începe devreme în ciclul de dezvoltare, însă vine cu dezavantajul că trebuiesc create un număr mare de module stub.
Strategia “Mixed”, sau “Sandwiched” este o combinație a abordărilor “Top-Down” și “Bottom-Up”. În această abordare, focusul este axat pe testarea unui layer al aplicației, integrând atât module de nivel superior, cât și module de nivel inferior.
pip install requests
În partea practică vom realiza teste de integrare pentru o aplicație web de tip REST API care permite gestionarea task-urilor personale, fiind disponibilă aici: https://todo.pixegami.io. Un task este caracterizat de un user id, task id, descriere (content) și status de finalizare (is_done).
În documentația aplicației (https://todo.pixegami.io/docs) sunt descrise operațiile expuse, și anume:
După ce a fost realizată testarea unitara a modulelor aplicației (endpoints, baze de date, s.a.), trebuie să fie validată interacțiunea dintre acestea. Astfel, se dorește să se testeze ca operațiile pe task-uri descrise mai sus se execută cu succes.