🚨 Gerçek Hayat Sorunları ve Çözümleri
Gerçek Hayat Sorunları ve Çözümleri: REST Assured hatalarını debug etmek, bir elektrikçinin kablo arızası tespitine benzer: sigortayı değiştirmek yerine önce sigorta mı yoksa kab
REST Assured hatalarını debug etmek, bir elektrikçinin kablo arızası tespitine benzer: sigortayı değiştirmek yerine önce sigorta mı yoksa kablo mu arızalandığını tespit edersin — aksi hâlde yeni sigorta da yanacak. Peki hata mesajını google'layıp çözümü uygulayabiliyorum; neden "neden oluyor" sorusunu ayrıca sormam gerekiyor? Çünkü `SSLHandshakeException` hata mesajı dört farklı nedenden çıkabilir: self-signed sertifika, süresi dolmuş CA, corporate proxy veya yanlış keystore — bunların hepsine aynı mesaj gelir ve yanlış nedene yanlış çözümü uygulamak (örn. `.relaxedHTTPSValidation()` ile tüm SSL'i kapatmak) test ortamında çalışır ama production'da güvenlik açığı bırakır. Java'da Spring'in `NestedRuntimeException`'larını debug ederken "caused by" zincirini sonuna kadar okumak ne kadar kritikse, REST Assured'da da `.log().all()` ile tam request/response'u loglamak ve 401/403/404 farkını anlamak o kadar kritiktir. QA açısından en pahalı hata: "Connection refused" alıyorsun ve servisi yeniden başlatıyorsun — ama esas neden testin yanlış base URL'e atıyor olması. `System.out.println(RestAssured.baseURI)` ile baseURI'yi bir kez yazdırmak seni 2 saatlik debug süresinden kurtarır.
🚨 Sorun 1: SSL Hatası
Micro Lab: REST Assured assertion yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
setRelaxedHTTPSValidation() ve Health-Check Döngüsü Aynı Hatanın İki Farklı Nedenini Nasıl Çözer?
SSLHandshakeException'ın kök nedeni…
`SSLHandshakeException`'ın kök nedeni self-signed sertifikadır — `.setRelaxedHTTPSValidation()` bu sertifika kontrolünü ATLAR, ama YORUMDAKİ uyarı gibi SADECE dev/test ortamında GÜVENLİDİR.
AYNI bölümdeki waitForService() TAMAMEN…
AYNI bölümdeki `waitForService()` TAMAMEN FARKLI bir soruna çözümdür: CI/CD'de uygulama testlerden SONRA ayağa kalkarsa, ilk istekler bağlantı hatası ALIR.
for (i=0; i<10; i++) + Thread.sleep(3000)…
`for (i=0; i<10; i++)` + `Thread.sleep(3000)` döngüsü, servis HAZIR olana kadar EN FAZLA 30 saniye BEKLER — sabit bir `sleep(30000)` yerine, servis erken hazırsa döngü ERKEN çıkar.
10 denemenin HEPSİ başarısız olursa…
10 denemenin HEPSİ başarısız olursa `throw new RuntimeException(...)` net bir hata FIRLATIR — sessizce devam edip ANLAMSIZ bir "Connection refused" ile karışık bir sonraki hatayı GÖRMEZSİN.
🚨 Sorun 2: Flaky Test