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:
În această abordare, toate modulele sunt integrate și testate simultan, ca un întreg.
Avantaje:
Dezavantaje:
Recomandări:
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:
Exemplu comparativ (site eCommerce):
Se începe cu modulele low-level și se urcă treptat. De exemplu: de la „tricouri” → „haine bărbați” → „îmbrăcăminte”.
Când să o folosești:
Se pornește de la modulele high-level către cele low-level. Oferă o imagine de ansamblu devreme în proiect.
Când să o folosești:
Se combină top-down și bottom-up.
Avantaje:
Dezavantaje:
Pentru a clona repo-ul și a accesa resursele aferente laboratorului:
student@tsc:~$ git clone git@github.com:cs-pub-ro/systems-testing.git student@tsc:~$ cd systems-testing/laboratories student@tsc:~/laboratories$ cd integration-testing
Dacă aveți local repo-ul, asigurați-vă că aveți ultima versiune.
student@tsc:~$ cd systems-testing student@tsc:~$ git pull
Dacă folosiți un fork al repo-ului, asigurați-vă că este sincronizat cu repo-ul principal.
pip install pytest 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.
Validați că request-urile întorc codurile de status HTTP corecte (200 în cazul lui PUT și GET) și că body-ul răspunsului primit este cel așteptat (în cazul lui GET, json-ul din body-ul primit ca răspuns trebuie să conțină task-ul introdus prin acțiunea PUT: content, user_id, is_done).
Task_id-ul este generat random server-side, astfel că task-id-ul trimis prin operația de PUT in create_task este irelevant, iar răspunsul request-ului create_task va conține task-id-ul generat.
Încercați să generați user_id-uri unice, altfel există șansa ca operația de listare să vă întoarcă task-uri.
Pentru UPDATE API-ul răspunde cu 200 și creează task-ul dacă nu există deja, puteți verifica ulterior cu GET.