Sobes.tech
Middle

Kā jūs varat automatizēt API testēšanu?

sobes.tech AI

Atbilde no AI

API automatizētās testēšanas nolūkos es izmantoju sekojošo:

  1. Instrumentu izvēle:

    • Postman: Lieliska risinājums manuālam un pusautomātiskam testējumam, pieprasījumu kolekciju veidošanai, JavaScript skriptu rakstīšanai pārbaudījumiem (assertions) un vidi konfigurēšanai.
    • Rest-Assured (Java) / Requests (Python): bibliotēkas automatizēto testu rakstīšanai.
    • Swagger/OpenAPI: Klienta koda vai testu ģenerēšanai pēc API specifikācijas.
  2. Testu scenāriju definēšana: API specifikācijas analīze, endpointu, metožu (GET, POST, PUT, DELETE u.c.), parametru, galveno, pieprasījuma ķermeņa, gaidāmo statusa kodu un atbilžu formātu (JSON, XML) noteikšana.

  3. Testu īstenošana:

    • Ar Postman:

      • Kolekciju veidošana testu grupēšanai.
      • Pre-request skriptu rakstīšana datu sagatavošanai.
      • Testu rakstīšana, lai pārbaudītu atbildes statusu, galvenes, atbildes ķermeni (pm.response.json(), pm.expect(), chai.expect()).
      • Vides mainīgo izmantošana parametriem, kas mainās starp vidēm.
      • Kolekciju palaišana ar Collection Runner vai Newman (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');
      });
      
    • Ar Rest-Assured (Java):

      • Java koda rakstīšana, izmantojot testēšanas ietvarus (JUnit, TestNG).
      • Pieprasījumu veidošana, parametru, galveno, ķermeņa norādīšana.
      • Pieprasījumu izpilde (when().get(), post(), u.c.).
      • Atbildes pārbaude (then().statusCode(int), body(String path, Matcher<?> matcher)).
      // Rest-Assured (Java) example using 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"; // Bāzes URL iestatīšana
      
              given()
              .when()
                  .get("/users/1") // GET pieprasījuma nosūtīšana
              .then()
                  .statusCode(200) // Statusa koda pārbaude
                  .body("data.id", equalTo(1)); // Atbildes lauka pārbaude
          }
      }
      
  4. Datu pārvaldība: parametrizācija testiem, dažādu datu kombināciju pārbaude.

  5. Testu palaišana CI/CD plūsmā: automatizētu API testu integrācija ar Jenkins, GitLab CI, GitHub Actions.

  6. Rezultātu analīze un atskaišu sagatavošana: testu rezultātu atskaišu ģenerēšana (piem., Allure, HTML atskaites no TestNG/JUnit). Svarīgu kļūdu analīze.

Šāda pieeja nodrošina regulāru un uzticamu API funkcionalitātes un stabilitātes pārbaudi dažādos izstrādes posmos.