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