Sobes.tech
Middle

Чӣ гуна метавонед санҷиши API-ро автоматӣ кунед?

sobes.tech AI

Ҷавоб аз AI

Барои автоматизатсияи санҷиши API ман азҳоро истифода мебарам:

  1. Интихоби асбҳо:

    • Postman: Ҳалли аъло барои санҷиши дастӣ ва нимавтоматӣ, эҷоди коллеҷҳои дархостҳо, навиштани скриптҳо дар JavaScript барои тафтишот (assertions) ва эҷоди муҳитҳо.
    • Rest-Assured (барои Java) / Requests (барои Python): Китобхонаҳо барои навиштани санҷишҳои автоматӣ дар код. Имкон медиҳанд, ки дархостҳоро боэътимод созанд, ҷавобҳоро коркард кунанд ва тафтишотро мураккаб нависанд.
    • Swagger/OpenAPI: Барои тавлиди коди муштариёӣ ё тестҳо дар асоси спецификацияи API.
  2. Таъйини сценарияҳои санҷиш: Таҳлили спецификацияи API, муайян кардани endpoints, усулҳо (GET, POST, PUT, DELETE ва ғайра), параметрҳо, сарлавҳаҳо, ҷисми дархостҳо, кодҳои статуси интизорӣ ва форматҳои ҷавоб (JSON, XML). Таҳия кардани сценарияҳои мусбат ва манфӣ.

  3. Иҷрои тестҳо:

    • Бо истифода аз Postman:

      • Эҷоди коллеҷҳо барои гурӯҳбандии тестҳо.
      • Навиштани скриптҳои Pre-request барои омодасозии маълумот (масалан, гирифтани токен).
      • Навиштани Tests (скриптҳои пас аз дархост) барои тафтиш кардани статуси ҷавоб, сарлавҳаҳо, ҷисми ҷавоб (pm.response.json(), pm.expect(), chai.expect()).
      • Истифодаи тағйирёбандаҳои муҳит барои параметрҳо, ки байни муҳитҳо тағйир меёбанд (URL, маълумоти воридотӣ).
      • Иҷрои коллеҷҳо тавассути Collection Runner ё Newman (барои CI/CD).
      // Тест дар Postman
      pm.test("Коди статус 200 аст", function () {
          pm.response.to.have.status(200);
      });
      
      pm.test("Таносуби ҷавоб дорои майдони махсус аст", function () {
          const responseJson = pm.response.json();
          pm.expect(responseJson.data).to.have.property('id');
      });
      
    • Бо истифода аз Rest-Assured (Java):

      • Навиштани код дар Java бо истифода аз рамзҳои тестӣ (JUnit, TestNG).
      • Эҷоди дархостҳо, нишон додани параметрҳо, сарлавҳаҳо, ҷисм.
      • Иҷрои дархост (when().get(), post(), ва ғайра).
      • Тасдиқи ҷавоб (then().statusCode(int), body(String path, Matcher<?> matcher)).
      // Намунаи Rest-Assured бо истифода аз 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"; // Муайян кардани URL-и асосӣ
      
              given()
              .when()
                  .get("/users/1") // Иҷрои дархости GET ба /users/1
              .then()
                  .statusCode(200) // Санҷидани коди статус
                  .body("data.id", equalTo(1)); // Санҷиши майдони дар ҷавоб
          }
      }
      
  4. Идоракунии маълумоти тест: Истифодаи параметргузории тестҳо барои санҷиши маҷмӯи гуногун аз маълумоти воридотӣ. Манбаъҳои маълумот метавонанд CSV, JSON файлҳо, базаҳои додаҳо бошанд.

  5. Иҷрои тестҳо дар пайплайни CI/CD: Интегратсияи тестҳои автоматии API дар пайплайнҳои пайвастагии пайваст ва таҳвил бо истифода аз асбҳо мисли Jenkins, GitLab CI, GitHub Actions. Ин имкон медиҳад, ки тестҳо автоматӣ дар ҳар як коммит иҷро шаванд ва фикри зуд дар бораи устувории API гирифта шавад. Барои Postman истифодаи Newman, барои қарорҳои коди - иҷрои рамзро.

  6. Таҳлили натиҷаҳо ва ҳисобот: Таҳия кардани ҳисоботҳо дар бораи гузаштан аз тестҳо (масалан, бо истифода аз Allure, HTML reports аз TestNG/JUnit). Мониторинг ва таҳлили сабабҳои нокомӣ.

Ин муносибат кафолат медиҳад, ки функсионалӣ ва устувории API дар марҳилаҳои гуногуни таҳия мунтазам ва боэътимод санҷиш карда шаванд.