📥 A3 · HTTP Response Anatomisi

A3 · HTTP Response Anatomisi: Bir HTTP response'u, bir **teslimat makbuzu + paket** gibidir: en üstte büyük bir **damga** (status code — işlem başarılı mı, 200/201/404/500) vardı

Bir HTTP response'u, bir **teslimat makbuzu + paket** gibidir: en üstte büyük bir **damga** (status code — işlem başarılı mı, 200/201/404/500) vardır, altında **teslimat notları** (header'lar — içerik tipi, önbellek, boyut) ve en sonda **paketin kendisi** (body — asıl veri) bulunur. Peki status kodu zaten "başarılı" diyorsa, neden body'yi de kontrol edelim? Çünkü status yalnızca request'in sunucuya ULAŞIP İŞLENDİĞİNİ söyler, içindeki verinin DOĞRU olduğunu değil: sunucu 200 döner ama `severity` alanı beklenenden farklı olabilir — yeşil ışık yanar ama araç yanlış yola gitmektedir. Java'da bunun karşılığı bir metodun `return` değeridir: metot exception atmadan döndü diye (200) dönen nesnenin alanları doğru demek değildir; `assertEquals` ile içeriği de doğrularsın. QA açısından bu, "yanlış PASS"in doğduğu yerdir: sadece status koduna bakan bir test yeşil görünür ama gerçekte hatalı veriyi geçirir — production'da sessiz bir bug olarak patlar.

Bir Response'un Üç Parçası

🎬 200 Ama Yanlış: Status Yeşil, Veri Kırmızı

Sunucu `GET /api/v1/bugs/42`'ye 200 OK döndü. Test yeşil görünüyor — ama gerçekten her şey yolunda mı?

Status kodu yalnızca "request işlendi" der. Asıl veri body'dedir — ve orada `severity` beklenen `CRITICAL` yerine `LOW` dönmüş.

Sadece status'a bakan test bu farkı GÖRMEZ — yeşil verir. Yanlış veri bir hayalet gibi testin içinden geçer.

İyi tester body'nin İÇİNDEKİ alanları tek tek doğrular: `severity === "CRITICAL"` mi? Ancak o zaman hayalet yakalanır.

Ders — Status kodu gerekli ama YETERLİ değildir. "200 = başarı" varsayımı yanlış PASS'ların anasıdır; body her zaman ayrıca doğrulanır.

Yanlış PASS Nasıl Doğar?

Test sadece status'a bakar…

Test yalnızca `status === 200` doğrular ve geçer. Body hiç okunmaz.

Body'de yanlış veri geçer…

`severity` yanlış olsa da status 200 olduğu için test yeşil verir — hata görünmez kalır.

Production'da patlar…