Middle
Cum veți verifica serviciul web?
sobes.tech AI
Răspuns de la AI
Verificarea unui serviciu web include mai multe etape cheie și tipuri de testare:
-
Înțelegerea cerințelor și specificațiilor:
- Studierea documentației (Swagger/OpenAPI, WSDL, specificații funcționale).
- Clarificarea punctelor neclare cu echipa de dezvoltare sau analiștii de business.
-
Planificarea testării:
- Stabilirea strategiei de testare.
- Alegerea metodelor și instrumentelor de testare.
- Planificarea volumului de date de testare.
-
Testarea funcțională:
- Scenarii pozitive: Verificarea comportamentului așteptat cu date de intrare corecte.
-
- Scenarii negative: Verificarea procesării datelor incorecte, erorilor, valorilor limită.
- Testarea tuturor operațiunilor (GET, POST, PUT, DELETE etc.).
- Validarea structurii cererilor și răspunsurilor (JSON, XML).
- Verificarea statusurilor HTTP (2xx - succes, 4xx - eroare client, 5xx - eroare server).
- Repornirea serverului în timpul funcționării (pentru scenarii negative).
-
Testarea integrării:
- Verificarea interacțiunii serviciului web cu alte servicii sau sisteme.
- Utilizarea instrumentelor care pot emula răspunsurile serviciilor dependente (moc-servere).
-
Testarea performanței:
- Testarea de încărcare: Verificarea comportamentului serviciului sub sarcină așteptată.
- Testarea de stres: Verificarea funcționării sub sarcină mai mare decât cea așteptată pentru a determina punctul de eșec.
- Testarea stabilității (Endurance testing): Verificarea funcționării serviciului sub sarcină pentru perioade lungi de timp.
- Măsurarea timpului de răspuns și a capacității de transfer.
-
Testarea securității:
- Verificarea autentificării și autorizării.
- Validarea intrărilor pentru prevenirea injecțiilor SQL, XSS și alte vulnerabilități.
- Verificarea prezenței HTTPS.
-
Testarea datelor:
- Verificarea corectitudinii datelor returnate de serviciu.
- Verificarea integrității datelor în operațiunile de creare, actualizare și ștergere.
- Testarea cu volume mari de date.
-
Automatizarea testării:
- Automatizarea testelor funcționale repetitive.
- Utilizarea bibliotecilor și framework-urilor pentru automatizarea testelor API (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
- Configurarea CI/CD pentru rularea automată a testelor.
-
Instrumente:
- Postman, Insomnia (testare manuală și automată).
- Apache JMeter, LoadRunner, Gatling (testare de performanță).
- OWASP ZAP, Burp Suite (testare de securitate).
- Biblioteci pentru limbaje de programare (Rest Assured pentru Java, Requests pentru Python etc.).
-
Raportare:
- Înregistrarea defectelor găsite cu descriere detaliată a pașilor de reproducere, rezultatelor așteptate și reale, datelor de solicitare/răspuns, statusului HTTP și jurnalelor.
- Elaborarea rapoartelor despre progresul testării.
Exemplu de test automatizat în Java folosind Rest Assured:
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
class UserServiceTest {
@Test
void testGetUserById() {
int userId = 1;
given()
.baseUri("http://api.example.com") // URL-ul de bază al serviciului
.when()
.get("/users/" + userId) // metoda și endpoint-ul
.then()
.statusCode(200) // verificarea codului de stare
.body("id", equalTo(userId)) // verificarea câmpului din corpul răspunsului
.body("name", equalTo("John Doe")); // verificarea altui câmp
}
@Test
void testCreateUser() {
String requestBody = "{\n" +
" \"name\": \"Jane Smith\",\n" +
" \"email\": \"jane.smith@example.com\"\n" +
"}";
given()
.baseUri("http://api.example.com")
.contentType("application/json") // Setarea tipului de conținut
.body(requestBody) // Trimiterea corpului cererii
.when()
.post("/users") // metoda și endpoint-ul pentru creare
.then()
.statusCode(201) // verificarea codului de stare "Created"
.body("name", equalTo("Jane Smith"))
.body("id", org.hamcrest.Matchers.notNullValue()); // verificarea dacă ID a fost creat
}
}