Sobes.tech
Middle

Veb-xizmatni qanday tekshirasiz?

sobes.tech AI

AIdan javob

Veb-xizmatining tekshiruvi asosiy bosqichlar va turli test turlarini o'z ichiga oladi:

  1. Talablar va spetsifikatsiyalarni tushunish:

    • Hujjatlarni o'rganish (Swagger/OpenAPI, WSDL, funksional spetsifikatsiyalar).
    • Rivojlantirish jamoasi yoki biznes-analitiklar bilan noaniq nuqtalarni aniqlashtirish.
  2. Test rejalashtirish:

    • Test strategiyasini belgilash.
    • Test usullari va vositalarini tanlash.
    • Test ma'lumotlar hajmini rejalashtirish.
  3. Funktsional testlar:

    • Ijobiy ssenariylar: To'g'ri kirish ma'lumotlari bilan kutilgan xulq-atvorni tekshirish.
    • Salbiy ssenariylar: Noto'g'ri ma'lumotlarni, xatolarni va chegaraviy qiymatlarni ishlashini tekshirish.
    • Barcha operatsiyalar (GET, POST, PUT, DELETE va boshqalar) test qilinadi.
    • So'rovlar va javoblarning tuzilishini tekshirish (JSON, XML).
    • HTTP javob holat kodlarini tekshirish (2xx - muvaffaqiyat, 4xx - mijoz xatosi, 5xx - server xatosi).
    • Ishlash davomida serverni qayta ishga tushirish (salbiy ssenariy uchun).
  4. Integratsiya testlari:

    • Veb-xizmatning boshqa xizmatlar yoki tizimlar bilan o'zaro ta'sirini tekshirish.
    • Bog'liq xizmatlarning javoblarini emulyatsiya qiladigan vositalardan foydalanish (mock-serverlar).
  5. Performans testlari:

    • Yuk testlari: Xizmatning kutilgan yuk ostida xulq-atvorini tekshirish.
    • Stress testlari: Kutilganidan yuqori yuk ostida ishlashini tekshirish va nosozlik nuqtasini aniqlash.
    • Barqarorlik testlari (Endurance testing): Xizmatning uzoq muddatli yuk ostida ishlashini tekshirish.
    • Javob vaqti va o'tkazuvchanlikni o'lchash.
  6. Xavfsizlik testlari:

    • Autentifikatsiya va ruxsatlarni tekshirish.
    • SQL injektsiyalar, XSS va boshqa zaifliklarni oldini olish uchun kirishlarni validatsiya qilish.
    • HTTPS mavjudligini tekshirish.
  7. Ma'lumotlar testlari:

    • Xizmat tomonidan qaytarilgan ma'lumotlarning to'g'riligini tekshirish.
    • Yaratish, yangilash va o'chirish operatsiyalarida ma'lumotlarning yaxlitligini ta'minlash.
    • Katta hajmdagi ma'lumotlar bilan testlar.
  8. Testlarni avtomatlashtirish:

    • Rutinni funktsional testlarni avtomatlashtirish.
    • API testlarini avtomatlashtirish uchun kutubxonalar va ramkalarni ishlatish (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • Testlarni avtomatik ishga tushirish uchun CI/CD ni sozlash.
  9. Asboblar:

    • Postman, Insomnia (qo'lda va avtomatlashtirilgan testlar).
    • Apache JMeter, LoadRunner, Gatling (performans testlari).
    • OWASP ZAP, Burp Suite (xavfsizlik testlari).
    • Dasturlash tillari uchun kutubxonalar (Java uchun Rest Assured, Python uchun Requests va boshqalar).
  10. Hisobotlar:

    • Topilgan xatolarni batafsil tavsifi bilan yozib olish, takrorlash bosqichlari, kutilgan va haqiqiy natijalar, so'rov/ javob ma'lumotlari, HTTP holati va loglar.
    • Testlarning rivojlanish hisobotlarini tayyorlash.

Java'da Rest Assured yordamida avtomatlashtirilgan test misoli:

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") // Xizmatning asosiy URL-si
            .when()
            .get("/users/" + userId) // Usul va endpoint
            .then()
            .statusCode(200) // Status kodini tekshirish
            .body("id", equalTo(userId)) // Javobdagi maydonni tekshirish
            .body("name", equalTo("John Doe")); // Boshqa maydonni tekshirish
    }

    @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") // Kontent turini o'rnatish
            .body(requestBody) // So'rovning tanasi
            .when()
            .post("/users") // Yaratish uchun usul va endpoint
            .then()
            .statusCode(201) // "Yaratildi" status kodini tekshirish
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Yaratilgan ID ni tekshirish
    }
}