Sobes.tech
Middle

Ինչպե՞ս եք ստուգելու վեբ ծառայությունը։

sobes.tech AI

Պատասխան AI-ից

Վեբ ծառայության ստուգումը ներառում է մի քանի հիմնական փուլեր և տեսակի թեստավորում.

  1. Տեղեկատվության և սպեկցիֆիկացիաների ըմբռնում:

    • Տրամադրված փաստաթղթերի ուսումնասիրություն (Swagger/OpenAPI, WSDL, գործառնական սպեկցիֆիկացիաներ):
    • Անորոշ կետերի հստակեցում զարգացման թիմի կամ բիզնես-անալիտիկների հետ:
  2. Թեստավորման պլանավորում:

    • Թեստավորման ռազմավարության որոշում:
    • Մեթոդների և գործիքների ընտրություն:
    • Տվյալների ծավալի պլանավորում:
  3. Գործառնական թեստավորում:

    • Պոզիտիվ սցենարներ: Ապահովել սպասվելիք վարքագիծը ճիշտ մուտքային տվյալների դեպքում:
    • Նեգատիվ սցենարներ: Նշել սխալ տվյալների, սխալների, սահմանային արժեքների մշակումը:
    • Բոլոր գործողությունների թեստավորում (GET, POST, PUT, DELETE և այլն):
    • Հարցումների և պատասխանների կառուցվածքի վավերացում (JSON, XML):
    • HTTP պատասխանների կարգավիճակների ստուգում (2xx - հաջողություն, 4xx - հաճախորդի սխալ, 5xx - սերվերի սխալ):
    • Սերվերի աշխատանքը վերագործարկում աշխատանքային ժամանակ (նեգատիվ սցենար):
  4. Ինտեգրացիոն թեստավորում:

    • Վեբ ծառայության փոխազդեցության ստուգում այլ ծառայությունների կամ համակարգերի հետ:
    • Օգտագործել գործիքներ, որոնք կարող են միմյանց պատասխանները միմյանցից կախված ծառայություններից (մոկ-սերվերներ):
  5. Աշխատունակության թեստավորում:

    • Լիցքաթափման թեստավորում: Ստուգել ծառայության վարքը սպասվող բեռի դեպքում:
    • Սթրես-թեստավորում: Ստուգել աշխատանքը բարձր բեռի դեպքում՝ թուլության կետը որոշելու համար:
    • կայունության թեստավորում (Endurance testing):
    • Ժամանակի պատասխան և անցանելիության չափում:
  6. Անվտանգության թեստավորում:

    • Վավերացնել նույնականացումը և թույլտվությունը:
    • Վավերացնել մուտքային տվյալները SQL injection, 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-ի ստուգում
    }
}