Sobes.tech
Middle

Kaip galite automatizuoti API testavimą?

sobes.tech AI

Atsakymas iš AI

API automatizavimo testavimui naudoju šiuos:

  1. Įrankių pasirinkimas:

    • Postman: Puikus sprendimas rankiniam ir pusiauautomatiniam testavimui, užklausų kolekcijų kūrimui, JavaScript skriptų rašymui patikrinimams (assertions) ir aplinkų kūrimui.
    • Rest-Assured (Java) / Requests (Python): bibliotekos automatizuotų testų rašymui.
    • Swagger/OpenAPI: Kliento kodo ar testų generavimui pagal API specifikaciją.
  2. Testų scenarijų apibrėžimas: API specifikacijos analizė, endpoint'ų, metodų (GET, POST, PUT, DELETE ir kt.), parametrų, antraščių, užklausos kūno, laukiamų statuso kodų ir atsakymo formatų (JSON, XML) nustatymas.

  3. Testų įgyvendinimas:

    • Naudojant Postman:

      • Kurti kolekcijas testų grupavimui.
      • Rašyti pre-request skriptus duomenų paruošimui.
      • Rašyti testus atsakymo statuso, antraščių, atsakymo kūno patikrinimui (pm.response.json(), pm.expect(), chai.expect()).
      • Naudoti aplinkos kintamuosius parametrams, kurie keičiasi tarp aplinkų.
      • Paleisti kolekcijas per Collection Runner arba 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');
      });
      
    • Naudojant Rest-Assured (Java):

      • Rašyti Java kodą naudojant testavimo framework'us (JUnit, TestNG).
      • Kurti užklausas, nurodyti parametrus, antraštes, kūną.
      • Vykdyti užklausas (when().get(), post(), ir kt.).
      • Patikrinti atsakymą (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"; // Nustatyti bazinį URL
      
              given()
              .when()
                  .get("/users/1") // Siųsti GET užklausą
              .then()
                  .statusCode(200) // Patikrinti statuso kodą
                  .body("data.id", equalTo(1)); // Patikrinti atsakymo lauko reikšmę
          }
      }
      
  4. Duomenų valdymas: parametrizacija testų, įvairių duomenų kombinacijų tikrinimas.

  5. Testų paleidimas CI/CD pipeline'e: automatizuotų API testų integracija su Jenkins, GitLab CI, GitHub Actions.

  6. Rezultatų analizė ir ataskaitų rengimas: testų rezultatų ataskaitų generavimas (pvz., Allure, HTML ataskaitos iš TestNG/JUnit). Svarbių klaidų analizė.

Toks požiūris užtikrina reguliarią ir patikimą API funkcionalumo ir stabilumo patikrą įvairiuose vystymo etapuose.