Middle
Kako ćete proveriti veb servis?
sobes.tech АИ
Одговор од АИ
Провера веб сервиса укључује неколико кључних етапа и типова тестирања:
-
Разумевање захтева и спецификација:
- Проучавање документације (Swagger/OpenAPI, WSDL, функционалне спецификације).
- Разјашњавање нејасних тачака са тимом за развој или пословним аналитичарима.
-
Планирање тестирања:
- Одређивање стратегије тестирања.
- Избор метода и алата за тестирање.
- Планирање обима тест података.
-
Функционално тестирање:
- Позитивни сценарији: Провера очекиваног понашања са исправним улазним подацима.
- Негативни сценарији: Провера обраде неисправних података, грешака, граничних вредности.
- Тестирање свих операција (GET, POST, PUT, DELETE итд.).
- Валидација структуре захтева и одговора (JSON, XML).
- Провера HTTP статус кодова (2xx - успех, 4xx - грешка клијента, 5xx - грешка сервера).
- Рестарт сервера током рада (за негативне сценарије).
-
Интеграционо тестирање:
- Провера интеракције веб сервиса са другим сервисима или системима.
- Коришћење алата који могу емуловати одговоре зависних сервиса (mock-сервери).
-
Тестирање перформанси:
- Тестови оптерећења: Провера понашања сервиса под очекиваним оптерећењем.
- Стрес тестови: Провера рада под већим оптерећењем за одређивање тачке отказа.
- Тестови стабилности (Endurance testing):
- Мерење времена одговора и пропусне способности.
-
Тестирање безбедности:
- Провера аутентификације и ауторизације.
- Валидација уноса за спречавање SQL инјекција, XSS и других уязвљивости.
- Провера присуства HTTPS.
-
Тестирање података:
- Провера исправности података које враћа сервис.
- Провера интегритета података при операцијама креирања, ажурирања и брисања.
- Тестирање са великим количинама података.
-
Аутоматизација тестирања:
- Аутоматизација рутинских функционалних тестова.
- Коришћење библиотека и оквира за аутоматизацију API тестова (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
- Подешавање CI/CD за аутоматско извршавање тестова.
-
Алатке:
- Postman, Insomnia (ручно и аутоматизовано тестирање).
- Apache JMeter, LoadRunner, Gatling (тестирање перформанси).
- OWASP ZAP, Burp Suite (тестирање безбедности).
- Библиотеке за програмске језике (Rest Assured за Java, Requests за Python и др.).
-
Извештавање:
- Записивање пронађених дефеката са детаљним описом корака репродукције, очекиваних и стварних резултата, података захтева/одговора, статуса 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 креиран
}
}