Sobes.tech
Middle

Veb xidməti necə yoxlayacaqsınız?

sobes.tech Süni İntellekt

AI-dan cavab

Veb xidməti yoxlaması bir neçə əsas mərhələ və test növünü əhatə edir:

  1. Tələblərin və spesifikasiyaların başa düşülməsi:

    • Sənədləşmənin öyrənilməsi (Swagger/OpenAPI, WSDL, funksional spesifikasiyalar).
    • İnkişaf komandası və ya biznes analitiklərlə anlaşılmaz nöqtələrin aydınlaşdırılması.
  2. Test planlaşdırılması:

    • Test strategiyasının müəyyənləşdirilməsi.
    • Test metodlarının və alətlərinin seçilməsi.
    • Test məlumatlarının həcminin planlaşdırılması.
  3. Funksional testlər:

    • Müsbət ssenarilər: Düzgün giriş məlumatları ilə gözlənilən davranışın yoxlanması.
    • Mənfi ssenarilər: Yanlış məlumatların, səhvlərin və sərhəd dəyərlərinin işlənməsinin yoxlanması.
    • Bütün əməliyyatların (GET, POST, PUT, DELETE və s.) test edilməsi.
    • Sorğuların və cavabların strukturunun yoxlanması (JSON, XML).
    • HTTP status kodlarının yoxlanması (2xx - uğur, 4xx - müştəri səhvi, 5xx - server səhvi).
    • Serverin işləməsi zamanı yenidən başlatmaq (mənfi ssenarilər üçün).
  4. İnteqrasiya testləri:

    • Veb xidməti ilə digər xidmətlər və ya sistemlər arasındakı qarşılıqlı əlaqənin yoxlanması.
    • Asılı xidmətlərin cavablarını emulyasiya edə bilən alətlərin istifadəsi (mock-serverlər).
  5. Performans testləri:

    • Yük testləri: Xidmətin gözlənilən yüklə davranışının yoxlanması.
    • Stress testləri: Gözlənilən yüklədən daha yüksək yüklə işləmənin yoxlanması və uğursuzluq nöqtəsinin müəyyənləşdirilməsi.
    • Stabilik testləri (Endurance testing): Xidmətin uzun müddət yüklə işləməsinin yoxlanması.
    • Cavab vaxtı və ötürmə qabiliyyətinin ölçülməsi.
  6. Təhlükəsizlik testləri:

    • Doğrulama və icazənin yoxlanması.
    • SQL injection, XSS və digər zəifliklərin qarşısını almaq üçün girişlərin yoxlanması.
    • HTTPS-nin mövcudluğunun yoxlanması.
  7. Məlumatların testləri:

    • Xidmət tərəfindən qaytarılan məlumatların düzgünlüyünün yoxlanması.
    • Yaratma, yeniləmə və silmə əməliyyatlarında məlumatların bütövlüyünün yoxlanması.
    • Böyük həcmdə məlumatlarla işləmə testləri.
  8. Testlərin avtomatlaşdırılması:

    • Rutini funksional testlərin avtomatlaşdırılması.
    • API testləri üçün kitabxanaların və çərçivələrin istifadəsi (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • Avtomatik testlərin işlədilməsi üçün CI/CD konfiqurasiyası.
  9. Alətlər:

    • Postman, Insomnia (əllə və avtomatlaşdırılmış testlər).
    • Apache JMeter, LoadRunner, Gatling (performans testləri).
    • OWASP ZAP, Burp Suite (təhlükəsizlik testləri).
    • Proqramlaşdırma dilləri üçün kitabxanalar (Java üçün Rest Assured, Python üçün Requests və s.).
  10. Hesabat:

    • Tapılan defektlərin qeydiyyatı və təfərrüatlı izahı, təkrarlanma addımları, gözlənilən və faktiki nəticələr, sorğu/cavab məlumatları, HTTP status və loglar.
    • Testlərin gedişatı haqqında hesabatların hazırlanması.

Rest Assured istifadə edilən Java üçün avtomatlaşdırılmış test nümunəsi:

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") // Xidmətin əsas URL-i
            .when()
            .get("/users/" + userId) // Metod və endpoint
            .then()
            .statusCode(200) // Status kodunun yoxlanması
            .body("id", equalTo(userId)) // Cavab bədənində sahənin yoxlanması
            .body("name", equalTo("John Doe")); // Digər sahənin yoxlanması
    }

    @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") // Məzmun növünün təyin edilməsi
            .body(requestBody) // Sorğu bədəninin göndərilməsi
            .when()
            .post("/users") // Yaratmaq üçün metod və endpoint
            .then()
            .statusCode(201) // "Yaradıldı" status kodunun yoxlanması
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Yaradılan ID-nin yoxlanması
    }
}