Kako možete automatizovati testiranje API-ja?
sobes.tech АИ
Одговор од АИ
Za automatizaciju testiranja API-ja koristim sledeće:
-
Izbor alata:
- Postman: Odlično rešenje za ručno i poluautomatsko testiranje, kreiranje kolekcija zahteva, pisanje skripti u JavaScript-u za provere (assertions) i kreiranje okruženja.
- Rest-Assured (za Java) / Requests (za Python): Biblioteke za pisanje automatizovanih testova u kodu. Omogućavaju fleksibilno sastavljanje zahteva, obradu odgovora i pisanje složenih provera.
- Swagger/OpenAPI: Za generisanje klijentskog koda ili testova na osnovu specifikacije API-ja.
-
Definisanje scenarija testiranja: Analiza specifikacije API-ja, definisanje endpoints-a, metoda (GET, POST, PUT, DELETE itd.), parametara, zaglavlja, tela zahteva, očekivanih status kodova i formata odgovora (JSON, XML). Razvijanje pozitivnih i negativnih scenarija.
-
Implementacija testova:
-
Sa korišćenjem Postman-a:
- Kreiranje kolekcija za grupisanje testova.
- Pisanje Pre-request skripti za pripremu podataka (npr. dobijanje tokena).
- Pisanje Tests (post-request skripti) za proveru statusa odgovora, zaglavlja, tela odgovora (
pm.response.json(),pm.expect(),chai.expect()). - Korišćenje promenljivih okruženja za parametre koji se menjaju između okruženja (URL, podaci za prijavu).
- Pokretanje kolekcija putem Collection Runner ili Newman (za CI/CD).
// Postman Test 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'); }); -
Sa korišćenjem Rest-Assured (Java):
- Pisanje koda u Java koristeći test framework-e (JUnit, TestNG).
- Kreiranje zahteva, navođenje parametara, zaglavlja, tela.
- Izvršavanje zahteva (
when().get(),post(), itd.). - Provera odgovora (
then().statusCode(int),body(String path, Matcher<?> matcher)).
// Rest-Assured (Java) primer koristeći 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"; // Postavljanje osnovnog URL-a given() .when() .get("/users/1") // Slanje GET zahteva na /users/1 .then() .statusCode(200) // Provera da je status kod 200 .body("data.id", equalTo(1)); // Provera polja u telu odgovora } }
-
-
Upravljanje test podacima: Korišćenje parametrizacije testova za proveru različitih kombinacija ulaznih podataka. Izvori podataka mogu biti CSV, JSON fajlovi, baze podataka.
-
Pokretanje testova u CI/CD pipeline-u: Integracija automatizovanih API testova u pipeline kontinuirane integracije / kontinuirane isporuke pomoću alata kao što su Jenkins, GitLab CI, GitHub Actions. Ovo omogućava automatsko pokretanje testova pri svakom commit-u i brzo dobijanje povratnih informacija o stabilnosti API-ja. Za Postman se koristi Newman, za kodna rešenja - pokretanje testnog okvira.
-
Analiza rezultata i izveštavanje: Generisanje izveštaja o prolaznosti testova (npr. korišćenjem Allure, HTML izveštaja od TestNG/JUnit). Praćenje rezultata i analiza uzroka neuspeha.
Ovaj pristup obezbeđuje redovno i pouzdano proveravanje funkcionalnosti i stabilnosti API-ja na različitim fazama razvoja.