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 (тестове за сигурност).
    • Библиотеки за програмни езици (Rest Assured за Java, Requests за Python и др.).
  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) // Проверка за статус "Created"
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Проверка, че е създадено ID
    }
}