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 და ა.შ.), პარამეტრების, სათაურების, მოთხოვნის სხეულის, ელოდებოდან კოდის და პასუხის ფორმატების განსაზღვრა.

  3. ტესტების განხორციელება:

    • Postman-ის გამოყენებით:

      • კოლექციების შექმნა ტესტების ჯგუფირებისთვის.
      • Pre-request სკრიპტების დაწერა მონაცემების მომზადებისთვის.
      • ტესტების დაწერა პასუხის სტატუსის, სათაურების, პასუხის სხეულის შემოწმებისთვის (pm.response.json(), pm.expect(), chai.expect()).
      • გარემოს ცვლადების გამოყენება.
      • კოლექციების გაშვება Collection Runner ან Newman-ის საშუალებით.
      // 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');
      });
      
    • Rest-Assured (Java) გამოყენებით:

      • Java კოდის დაწერა, ტესტირების ფრეიმვორკების გამოყენებით (JUnit, TestNG).
      • შეკითხვების შექმნა, პარამეტრების, სათაურების, სხეულის მითითება.
      • შეკითხვების შესრულება (when().get(), post(), და ა.შ.).
      • პასუხის შემოწმება (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"; // Base URL-ის დაყენება
      
              given()
              .when()
                  .get("/users/1") // GET მოთხოვნის გაგზავნა
              .then()
                  .statusCode(200) // სტატუს კოდის შემოწმება
                  .body("data.id", equalTo(1)); // პასუხის ბოჭკოს შემოწმება
          }
      }
      
  4. მონაცემების მართვა: ტესტების პარამეტრიზაცია, სხვადასხვა მონაცემების შემოწმება.

  5. CI/CD პროცესში გაშვება: ავტომატიზირებული API ტესტების ინტეგრაცია Jenkins, GitLab CI, GitHub Actions-ის გამოყენებით.

  6. შედეგების ანალიზი და ანგარიშგება: ტესტების შედეგების ანგარიშების შექმნა (მაგ., Allure, HTML ანგარიშები TestNG/JUnit-ისგან). სირთულეების მიზეზების ანალიზი.

ეს მიდგომა უზრუნველყოფს API-ის ფუნქციონალობის და სტაბილურობის რეგულარულ და საიმედო შემოწმებას განვითარების სხვადასხვა ეტაპზე.