Cum puteți automatiza testarea API-urilor?
sobes.tech AI
Răspuns de la AI
Pentru automatizarea testării API-urilor, folosesc următoarele:
-
Alegerea instrumentelor:
- Postman: O soluție excelentă pentru testarea manuală și semi-automatizată, crearea de colecții de solicitări, scrierea de scripturi în JavaScript pentru verificări (assertions) și crearea de medii.
- Rest-Assured (pentru Java) / Requests (pentru Python): Biblioteci pentru scrierea testelor automatizate în cod. Permite construirea flexibilă a solicitărilor, procesarea răspunsurilor și scrierea de verificări complexe.
- Swagger/OpenAPI: Pentru generarea de cod client sau teste bazate pe specificația API.
-
Definirea scenariilor de testare: Analiza specificației API, identificarea endpoint-urilor, metodelor (GET, POST, PUT, DELETE etc.), parametrilor, anteturilor, corpului solicitărilor, codurilor de stare așteptate și formatelor răspunsurilor (JSON, XML). Dezvoltarea scenariilor pozitive și negative.
-
Implementarea testelor:
-
Cu Postman:
- Crearea de colecții pentru gruparea testelor.
- Scrierea de scripturi Pre-request pentru pregătirea datelor (de exemplu, obținerea unui token).
- Scrierea de Tests (scripturi post-request) pentru verificarea statusului răspunsului, anteturilor, corpului răspunsului (folosind
pm.response.json(),pm.expect(),chai.expect()). - Utilizarea variabilelor de mediu pentru parametrii care se schimbă între medii (URL, date de autentificare).
- Rularea colecțiilor prin Collection Runner sau Newman (pentru CI/CD).
// Test Postman pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm.test("Response body contains specific field", function () { const responseJson = pm.response.json(); pm.expect(responseJson.data).to.have.property('id'); }); -
Cu Rest-Assured (Java):
- Scrierea de cod în Java folosind framework-uri de testare (JUnit, TestNG).
- Crearea solicitărilor, specificarea parametrilor, anteturilor, corpului.
- Executarea solicitării (
when().get(),post(), etc.). - Verificarea răspunsului (
then().statusCode(int),body(String path, Matcher<?> matcher)).
// Exemplu Rest-Assured (Java) folosind JUnit import io.restassured.RestAssured; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; public class ApiTest { @Test public void testGetUser() { RestAssured.baseURI = "https://api.example.com"; // Setarea URL-ului de bază given() .when() .get("/users/1") // Trimiterea solicitării GET către /users/1 .then() .statusCode(200) // Verificarea codului de stare .body("data.id", equalTo(1)); // Verificarea câmpului din corpul răspunsului } }
-
-
Gestionarea datelor de test: Utilizarea parametrizării testelor pentru verificarea diferitelor combinații de date de intrare. Sursele de date pot fi fișiere CSV, JSON, baze de date.
-
Executarea testelor în pipeline-ul CI/CD: Integrarea testelor automate API în pipeline-ul de integrare continuă / livrare continuă folosind instrumente precum Jenkins, GitLab CI, GitHub Actions. Acest lucru permite rularea automată a testelor la fiecare commit și obținerea rapidă a feedback-ului despre stabilitatea API-ului. Pentru Postman se folosește Newman, pentru soluțiile de cod - rularea framework-ului de testare.
-
Analiza rezultatelor și raportarea: Generarea de rapoarte despre trecerea testelor (de exemplu, folosind Allure, rapoarte HTML de la TestNG/JUnit). Monitorizarea rezultatelor și analiza cauzelor eșecurilor.
Această abordare asigură verificarea regulată și fiabilă a funcționalității și stabilității API-ului în diferite etape ale dezvoltării.