Sobes.tech
Middle

Kaip patikrinsite internetinę paslaugą?

sobes.tech AI

Atsakymas iš AI

Tinklo paslaugos patikrinimas apima keletą pagrindinių etapų ir testavimo tipų:

  1. Reikalavimų ir specifikacijų supratimas:

    • Dokumentacijos studijavimas (Swagger/OpenAPI, WSDL, funkcinių specifikacijų).
    • Neaiškumų aiškinimas su kūrimo komanda ar verslo analitikais.
  2. Testavimo planavimas:

    • Testavimo strategijos nustatymas.
    • Metodų ir įrankių pasirinkimas.
    • Testinių duomenų kiekio planavimas.
  3. Funkcinis testavimas:

    • Teigiami scenarijai: Tikrinimas, ar veikia tikėtinas elgesys su teisingais įėjimo duomenimis.
    • Neigiami scenarijai: Tikrinimas, kaip apdorojami neteisingi duomenys, klaidos, ribinės reikšmės.
    • Visų operacijų (GET, POST, PUT, DELETE ir kt.) testavimas.
    • Užklausų ir atsakymų struktūros validavimas (JSON, XML).
    • HTTP atsakymų būsenų patikra (2xx - sėkmė, 4xx - kliento klaida, 5xx - serverio klaida).
    • Serverio perkrovimas darbo metu (neigiame scenarijui).
  4. Integracijos testavimas:

    • Web paslaugos sąveikos su kitomis paslaugomis ar sistemomis patikra.
    • Naudojimas įrankių, kurie gali emuliuoti priklausomų paslaugų atsakymus (moke-serveriai).
  5. Našumo testavimas:

    • Apkrovos testavimas: Paslaugos elgesio patikra esant tikėtina apkrovai.
    • Streso testavimas: Darbo patikra esant didesnei nei tikėtina apkrovai, klaidų taško nustatymas.
    • Stabilumo testavimas (Endurance testing):
    • Atsako laiko ir pralaidumo matavimas.
  6. Saugumo testavimas:

    • Autentifikacijos ir autorizacijos patikra.
    • Duomenų įvedimo validavimas SQL injekcijoms, XSS ir kitoms pažeidžiamybėms.
    • HTTPS buvimo patikra.
  7. Duomenų testavimas:

    • Grąžinamų duomenų tikslumo patikra.
    • Duomenų vientisumo patikra kuriant, atnaujinant ir trinant.
    • Darbas su dideliais duomenų kiekiais testavimas.
  8. Automatizuotas testavimas:

    • Rutininės funkcinių testų automatizavimas.
    • API testų automatizavimui naudoti bibliotekas ir framework'us (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • CI/CD nustatymas automatinio paleidimo.
  9. Įrankiai:

    • Postman, Insomnia (rankinis ir automatizuotas testavimas).
    • Apache JMeter, LoadRunner, Gatling (našumo testavimas).
    • OWASP ZAP, Burp Suite (saugumo testavimas).
    • Programavimo kalbų bibliotekos (Java Rest Assured, Python Requests ir kt.).
  10. Ataskaitų teikimas:

    • Rasta defektų išsamus aprašymas, atkūrimo žingsniai, tikėtini ir faktiniai rezultatai, užklausos/atsakymo duomenys, HTTP būsenos ir žurnalai.
    • Testavimo proceso ataskaitų sudarymas.

Java pavyzdys automatizuoto testo naudojant 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") // Paslaugos pagrindinis URL
            .when()
            .get("/users/" + userId) // Metodas ir galinė nuoroda
            .then()
            .statusCode(200) // Patikrinimas, ar atsakymo kodas 200
            .body("id", equalTo(userId)) // Patikrinimas, ar atsakymo turinyje yra teisingas ID
            .body("name", equalTo("John Doe")); // Patikrinimas, ar yra teisingas vardas
    }

    @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") // turinio tipas
            .body(requestBody) // užklausos turinys
            .when()
            .post("/users") // metodas ir galinė nuoroda
            .then()
            .statusCode(201) // Patikrinimas, ar sukurtas
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Patikrinimas, ar yra sukurtas ID
    }
}