Sobes.tech
Middle

Kako ćete proveriti veb servis?

sobes.tech АИ

Одговор од АИ

Провера веб сервиса укључује неколико кључних етапа и типова тестирања:

  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 (тестирање безбедности).
    • Библиотеке за програмске језике (Rest Assured за Java, Requests за Python и др.).
  10. Извештавање:

    • Записивање пронађених дефеката са детаљним описом корака репродукције, очекиваних и стварних резултата, података захтева/одговора, статуса HTTP и дневника.
    • Израда извештаја о напретку тестирања.

Пример аутоматизованог теста у Јави уз коришћење 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 креиран
    }
}