Sobes.tech
Middle

როგორ შეამოწმებთ ვებ- სერვისს?

sobes.tech AI

პასუხი AI-სგან

ვებ-სერვისის შემოწმება მოიცავს რამდენიმე ძირითადი ეტაპს და ტესტირების ტიპებს:

  1. მოთხოვნებისა და სპეციფიკაციების გაგება:

    • დოკუმენტაციის შესწავლა (Swagger/OpenAPI, WSDL, ფუნქციური სპეციფიკაციები).
    • გაუგებრობების დაზუსტება განვითარების გუნდთან ან ბიზნეს-ანალიტიკოსებთან.
  2. ტესტირების დაგეგმვა:

    • სტრატეგიის განსაზღვრა.
    • მეთოდებისა და ინსტრუმენტების არჩევა.
    • მონაცემთა მოცულობის დაგეგმვა.
  3. ფუნქციონალური ტესტირება:

    • პოზიტიური სცენარები: მოსალოდნელი ქცევის შემოწმება სწორი შესვლის მონაცემებით.
    • ნეგატიური სცენარები: არასწორი მონაცემების, შეცდომების, საზღვრის მნიშვნელობების დამუშავების შემოწმება.
    • ყველა ოპერაციის (GET, POST, PUT, DELETE და ა.შ.) ტესტირება.
    • მოთხოვნების და პასუხების სტრუქტურის ვალიდაცია (JSON, XML).
    • HTTP პასუხების სტატუსების შემოწმება (2xx - წარმატება, 4xx - მომხმარებლის შეცდომა, 5xx - სერვერის შეცდომა).
    • სერვერის მუშაობის დროს გადატვირთვის განახლება (ნეგატიური სცენარისთვის).
  4. ინტეგრაციის ტესტირება:

    • ვებ-სერვისის ურთიერთქმედების შემოწმება სხვა სერვისებთან ან სისტემებთან.
    • ინსტრუმენტების გამოყენება, რომლებიც ემულირებენ დამოკიდებული სერვისების პასუხებს (mock-სერვერები).
  5. პროდუქტიულობის ტესტირება:

    • დატვირთვის ტესტირება: სერვისის ქცევის შემოწმება მოსალოდნელი დატვირთვის დროს.
    • სტრესი-ტესტირება: მუშაობის შემოწმება მაღალი დატვირთვის დროს, უარყოფითი წერტილის განსაზღვრა.
    • სტაბილურობის ტესტირება (Endurance testing):
    • პასუხის დროისა და გამტარუნარიანობის გაზომვა.
  6. უსაფრთხოების ტესტირება:

    • ავტენტიფიკაციის და ავტორიზაციის შემოწმება.
    • SQL ინექციის, XSS და სხვა სუსტი წერტილების თავიდან აცილება.
    • HTTPS-ის არსებობის შემოწმება.
  7. მონაცემთა ტესტირება:

    • სერვისის მიერ დაბრუნებული მონაცემების სისწორის შემოწმება.
    • მონაცემთა მთლიანობის შემოწმება შექმნის, განახლებისა და წაშლის ოპერაციების დროს.
    • დიდი მოცულობის მონაცემებთან მუშაობის ტესტირება.
  8. ავტომატიზებული ტესტირება:

    • ფუნქციონალური ტესტების ავტომატიზაცია.
    • API ტესტების ავტომატიზაციისთვის ბიბლიოთეკებისა და ფრეიმვორკების გამოყენება (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • CI/CD-ის კონფიგურაცია ავტომატური გაშვებისათვის.
  9. საშუალებები:

    • Postman, Insomnia (ხელით და ავტომატურად ტესტირება).
    • Apache JMeter, LoadRunner, Gatling (პროდუქტიულობის ტესტირება).
    • OWASP ZAP, Burp Suite (უსაფრთხოების ტესტირება).
    • პროგრამირების ენებისთვის განკუთვნილი ბიბლიოთეკები (Java-სთვის Rest Assured, Python-სთვის Requests და ა.შ.).
  10. ანგარიშგება:

    • აღმოჩენილი ხარვეზების დეტალური აღწერა, გამეორების ნაბიჯები, მოსალოდნელი და რეალური შედეგები, მოთხოვნის/პასუხის მონაცემები, HTTP სტატუსები და ლოგები.
    • ტესტირების პროცესის ანგარიშების შედგენა.

Java-ში ავტომატიზებული ტესტის მაგალითი Rest Assured-ის გამოყენებით:

import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

class UserServiceTest {

    @Test
    void testGetUserById() {
        int userId = 1;
        given()
            .baseUri("http://api.example.com") // სერვისის ძირითადი URL
            .when()
            .get("/users/" + userId) // მეთოდი და ბოლო პუნქტი
            .then()
            .statusCode(200) // პასუხის კოდის შემოწმება
            .body("id", equalTo(userId)) // პასუხის სხეულის შემოწმება
            .body("name", equalTo("John Doe")); // სხვა ველის შემოწმება
    }

    @Test
    void testCreateUser() {
        String requestBody = "{\n" +
                             "  \"name\": \"Jane Smith\",\n" +
                             "  \"email\": \"jane.smith@example.com\"\n" +
                             "}";

        given()
            .baseUri("http://api.example.com")
            .contentType("application/json") // კონტენტის ტიპის მითითება
            .body(requestBody) // მოთხოვნის სხეულის გადაცემა
            .when()
            .post("/users") // დამატების მეთოდი და ბოლო პუნქტი
            .then()
            .statusCode(201) // "შექმნილია" სტატუსი
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // შექმნილი ID-ის შემოწმება
    }
}