Sobes.tech
Middle

Kuidas te kontrollite veebiteenust?

sobes.tech AI

Vastus AI-lt

Veebiteenuse kontroll hõlmab mitmeid põhietappe ja testitüüpe:

  1. Nõuete ja spetsifikatsioonide mõistmine:

    • Dokumentatsiooni uurimine (Swagger/OpenAPI, WSDL, funktsionaalsed spetsifikatsioonid).
    • Ebaselgete punktide täpsustamine arendusmeeskonna või ärianalüütikutega.
  2. Testimise planeerimine:

    • Testistrateegia määratlemine.
    • Meetodite ja tööriistade valik.
    • Testandmete mahu planeerimine.
  3. Funktsionaalne testimine:

    • Positiivsed stsenaariumid: Ootuspärase käitumise kontroll õige sisendandmetega.
    • Negatiivsed stsenaariumid: Vigaste andmete, vigade ja piirmäärade töötlemise kontroll.
    • Kõigi operatsioonide (GET, POST, PUT, DELETE jms) testimine.
    • Päringute ja vastuste struktuuri valideerimine (JSON, XML).
    • HTTP vastuste olekute kontroll (2xx - edu, 4xx - kliendi viga, 5xx - serveri viga).
    • Serveri töö ajal taaskäivitamine (negatiivne stsenaarium).
  4. Integreerimise testimine:

    • Veebiteenuse koostöö teiste teenuste või süsteemidega kontroll.
    • Tööriistade kasutamine, mis suudavad emuleerida sõltuvate teenuste vastuseid (mock-serverid).
  5. Jõudluse testimine:

    • Koormustest: Teenuse käitumise kontroll oodatud koormuse korral.
    • Stressitest: Töö kontroll suurema koormuse korral, tõrkepunkti määramine.
    • Stabiilsuse test: Töö kontroll pika aja jooksul koormuse all.
    • Väljastusaja ja läbilaskevõime mõõtmine.
  6. Turvatestimine:

    • Autentimise ja autoriseerimise kontroll.
    • Sisendi valideerimine SQL-injektsioonide, XSS-i ja teiste haavatavuste vältimiseks.
    • HTTPS olemasolu kontroll.
  7. Andmete testimine:

    • Tagastatavate andmete õigsuse kontroll.
    • Andmete terviklikkuse kontroll loomise, uuendamise ja kustutamise operatsioonide ajal.
    • Töö suurte andmekogumitega testimine.
  8. Automatiseeritud testimine:

    • Funktsionaalsete testide rutiinide automatiseerimine.
    • API-testide automatiseerimiseks raamatukogude ja raamistikud (Rest Assured, JUnit/TestNG, Pytest, Postman Newman) kasutamine.
    • CI/CD seadistamine automaatselt käivitamiseks.
  9. Tööriistad:

    • Postman, Insomnia (käsi- ja automatiseeritud testimine).
    • Apache JMeter, LoadRunner, Gatling (jõudluse testimine).
    • OWASP ZAP, Burp Suite (turvatestimine).
    • Tarkvarakeelte raamatukogud (Java jaoks Rest Assured, Python jaoks Requests ja teised).
  10. Aruandlus:

    • Leitud vigade üksikasjalik kirjeldus, taasalustamise sammud, oodatud ja tegelikud tulemused, päringu/vastuse andmed, HTTP-olekud ja logid.
    • Testimise käigus koostatud aruanded.

Java näide automatiseeritud testist Rest Assured kasutades:

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") // Teenuse põhiaadress
            .when()
            .get("/users/" + userId) // Meetod ja lõpp-punkt
            .then()
            .statusCode(200) // Vastuse koodi kontroll
            .body("id", equalTo(userId)) // Vastuse keha välja kontroll
            .body("name", equalTo("John Doe")); // Teise välja kontroll
    }

    @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") // sisu tüüp
            .body(requestBody) // päringu keha
            .when()
            .post("/users") // meetod ja lõpp-punkt
            .then()
            .statusCode(201) // "Loodud" staatus
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // ID kontroll
    }
}