Sobes.tech
Middle

Web hizmetini nasıl kontrol edeceksiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Web hizmetinin doğrulanması birkaç temel aşama ve test türünü içerir:

  1. Gereksinimlerin ve spesifikasyonların anlaşılması:

    • Dokümantasyonun incelenmesi (Swagger/OpenAPI, WSDL, fonksiyonel spesifikasyonlar).
    • Geliştirme ekibi veya iş analistleri ile anlaşılmayan noktaların netleştirilmesi.
  2. Test planlaması:

    • Test stratejisinin belirlenmesi.
    • Test yöntemleri ve araçlarının seçimi.
    • Test verisi hacminin planlanması.
  3. Fonksiyonellik testleri:

    • Pozitif senaryolar: Doğru giriş verileriyle beklenen davranışın kontrolü.
    • Negatif senaryolar: Yanlış verilerin işlenmesi, hatalar, sınır değerleri.
    • Tüm işlemlerin (GET, POST, PUT, DELETE vb.) testi.
    • İstek ve yanıtların yapısının doğrulanması (JSON, XML).
    • HTTP yanıt durum kodlarının kontrolü (2xx - başarı, 4xx - istemci hatası, 5xx - sunucu hatası).
    • Çalışma sırasında sunucunun yeniden başlatılması (negatif senaryo için).
  4. Entegrasyon testleri:

    • Web hizmetinin diğer hizmetler veya sistemlerle etkileşiminin kontrolü.
    • Bağımlı hizmetlerin yanıtlarını taklit edebilen araçların kullanımı (mock sunucular).
  5. Performans testleri:

    • Yük testi: Hizmetin beklenen yük altında davranışının kontrolü.
    • Stres testi: Beklenenden daha yüksek yük altında çalışmanın doğrulanması ve arıza noktasının belirlenmesi.
    • Dayanıklılık testleri (Endurance testing): Hizmetin uzun süreli yük altında çalışmasının kontrolü.
    • Yanıt süresi ve bant genişliğinin ölçümü.
  6. Güvenlik testleri:

    • Kimlik doğrulama ve yetkilendirme kontrolleri.
    • SQL enjeksiyonları, XSS ve diğer güvenlik açıklarını önlemek için girişlerin doğrulanması.
    • HTTPS kullanımının kontrolü.
  7. Veri testleri:

    • Hizmet tarafından döndürülen verilerin doğruluğunun kontrolü.
    • Oluşturma, güncelleme ve silme işlemlerinde veri bütünlüğünün sağlanması.
    • Büyük veri hacimleriyle testler.
  8. Test otomasyonu:

    • Rutin fonksiyonel testlerin otomasyonu.
    • API testleri için kütüphaneler ve çerçevelerin kullanımı (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • Testlerin otomatik çalışması için CI/CD yapılandırması.
  9. Araçlar:

    • Postman, Insomnia (elle ve otomatik testler).
    • Apache JMeter, LoadRunner, Gatling (performans testleri).
    • OWASP ZAP, Burp Suite (güvenlik testleri).
    • Programlama dilleri için kütüphaneler (Java için Rest Assured, Python için Requests vb.).
  10. Raporlama:

    • Bulunan hataların detaylı açıklamalarıyla kaydı, tekrar adımlar, beklenen ve gerçek sonuçlar, istek/yanıt verileri, HTTP durumu ve loglar.
    • Test ilerleme raporlarının hazırlanması.

Java'da Rest Assured kullanılarak otomatikleştirilmiş test örneği:

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") // Servisin temel URL'si
            .when()
            .get("/users/" + userId) // Metod ve endpoint
            .then()
            .statusCode(200) // Durum kodunun kontrolü
            .body("id", equalTo(userId)) // Yanıt içindeki alanın kontrolü
            .body("name", equalTo("John Doe")); // Diğer alanın kontrolü
    }

    @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") // İçerik türünü ayarla
            .body(requestBody) // İstek gövdesi
            .when()
            .post("/users") // Oluşturmak için metod ve endpoint
            .then()
            .statusCode(201) // "Oluşturuldu" durum kodu
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Oluşturulan ID'yi kontrol et
    }
}