This shows you the differences between two versions of the page.
tsc:laboratoare:laborator-08 [2025/04/23 18:10] ionut_vladut.pasat |
tsc:laboratoare:laborator-08 [2025/05/05 12:04] (current) giorgiana.vlasceanu [Exerciții] |
||
---|---|---|---|
Line 11: | Line 11: | ||
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. | 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. | ||
- | {{:tsc:laboratoare:it2.png?600|}} | + | {{:tsc:laboratoare:it2.png?599|}} |
Cele 3 niveluri ale piramidei sunt: | Cele 3 niveluri ale piramidei sunt: | ||
- | * | ||
* Testarea Unitară: Baza piramidei. Se concentrează pe componente individuale. Sunt rapide și de obicei automatizate. | * Testarea Unitară: Baza piramidei. Se concentrează pe componente individuale. Sunt rapide și de obicei automatizate. | ||
- | * | ||
* Testarea de Integrare: Nivelul intermediar. Verifică interacțiunile dintre componentele integrate. | * Testarea de Integrare: Nivelul intermediar. Verifică interacțiunile dintre componentele integrate. | ||
- | * | ||
* Testarea E2E: Vârful piramidei. Verifică întregul sistem din perspectiva utilizatorului. Sunt mai puține la număr, mai lente și mai fragile. | * Testarea E2E: Vârful piramidei. Verifică întregul sistem din perspectiva utilizatorului. Sunt mai puține la număr, mai lente și mai fragile. | ||
Line 140: | Line 137: | ||
student@tsc:~$ git pull | student@tsc:~$ git pull | ||
</code> | </code> | ||
+ | |||
+ | Dacă folosiți un fork al repo-ului, asigurați-vă că este sincronizat cu repo-ul principal. | ||
+ | |||
+ | |||
<note warning> | <note warning> | ||
Line 163: | Line 164: | ||
* 1. Implementați un test de integrare pentru operația de creare a unui task. | * 1. Implementați un test de integrare pentru operația de creare a unui task. | ||
- | <note tip>**Hint**: validarea creării unui task presupune 2 request-uri, unul de **PUT** și altul de **GET**, testând interacțiunea dintre clientul web, endpoint-ul web și baza de date în care se stochează task-urile.</note> | + | <note tip>**Hint**: Validarea creării unui task presupune 2 request-uri, unul de **PUT** și altul de **GET**. |
- | <note tip>**Verificare**: 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//). </note> | + | |
- | <note tip> **Atenție**: 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.</note> | + | 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.</note> | ||
* 2. Implementați un test de integrare pentru operația de modificare a unui task. | * 2. Implementați un test de integrare pentru operația de modificare a unui task. | ||
* 3. Implementați un test de integrare pentru operația de listare a 3 task-uri. | * 3. Implementați un test de integrare pentru operația de listare a 3 task-uri. | ||
- | <note tip>**Hint**: Creați 3 task-uri sub același user_id, apoi validați că operația de listare întoarce 3 task-uri.</note> | + | <note tip>**Hint**: Creați 3 task-uri sub același user_id, apoi validați că operația de listare întoarce 3 task-uri. |
- | <note tip>**Sugestie**: Încercați să generați user_id-uri unice, altfel există șansa ca operația de listare să vă întoarcă task-uri.</note> | + | |
+ | Încercați să generați user_id-uri unice, altfel există șansa ca operația de listare să vă întoarcă task-uri.</note> | ||
* 4. Implementați un test de integrare pentru operația de ștergere a unui task | * 4. Implementați un test de integrare pentru operația de ștergere a unui task | ||
Line 177: | Line 181: | ||
* 5. Implementați câte un test care verifică comportamentul API-ului atunci când se încearcă accesarea (**GET**), modificarea (**UPDATE**) sau ștergerea (**DELETE**) unui task inexistent. | * 5. Implementați câte un test care verifică comportamentul API-ului atunci când se încearcă accesarea (**GET**), modificarea (**UPDATE**) sau ștergerea (**DELETE**) unui task inexistent. | ||
- | <note tip>**Hint**: Pentru fiecare operație folosiți un task id generat unic pentru a simula un task inexistent.</note> | + | <note tip>**Hint**: Pentru fiecare operație folosiți un task id generat unic pentru a simula un task inexistent. |
- | <note tip>**Hint**: Pentru **UPDATE** API-ul răspunde cu 200 și creează task-ul dacă nu există deja, puteți verifica ulterior cu **GET**.</note> | + | |
+ | Pentru **UPDATE** API-ul răspunde cu 200 și creează task-ul dacă nu există deja, puteți verifica ulterior cu **GET**.</note> | ||
* 6. Implementați un test care verifică comportamentul API-ului **create_task** cu date invalide. | * 6. Implementați un test care verifică comportamentul API-ului **create_task** cu date invalide. | ||
<note tip>**Hint**: Puteți folosi un string pentru completarea câmpului is_done. Folosiți-vă de documentație pentru a valida codul de eroare.</note> | <note tip>**Hint**: Puteți folosi un string pentru completarea câmpului is_done. Folosiți-vă de documentație pentru a valida codul de eroare.</note> |