← Tüm yazılar
TR 1 Eyl 2026 · 5 dk okuma Read in English →

Test Edilebilirlik Sonradan Eklenmez: Mimari Bir Kısıttır

Hepimiz tam olarak şu anı yaşadık. Geliştirici "benim makinemde çalışıyor" der, QA "staging'de patladı" der ve loglar tamamen sessiz kalır.

Suç neredeyse her zaman kırılgan test paketlerine ya da ortam kararsızlığına yıkılır. Ama kök neden nadiren test betiğidir. Sistem en baştan test edilebilir olacak şekilde kurulmamıştır.

Test Edilebilirlik Bir Kod Kalitesi Metriğidir

Bir uygulamayı "test edilebilir" yapmanın, arayüz butonlarına data-testid özniteliği yapıştırmaktan ibaret olduğu yönünde inatçı bir yanılgı hâlâ sürüyor. Gerçek mimari test edilebilirlik iki temel yetenekle ölçülür:

Bunlardan yoksun bir sistemi test etmeye kalktığında, üç öngörülebilir engele toslarsın.

Kara Kutu Kör Noktası

Dağıtık servislerin correlation ID'leri Kafka, RabbitMQ ya da EventBridge gibi asenkron sınırlar boyunca taşımıyorsa, kara kutu uçtan uca testler bir mesajın nerede takıldığını veya battığını tespit edemez. Kör halde hata ayıklıyorsundur.

Sleep Tuzağı

Koda gömülü Thread.sleep(5000) ya da çıplak bir cy.wait() gibi gecikmeler mühendislik çözümü değildir. Bunlar, test edilemez bir mimari için ödediğin vergidir. Servislerin deterministik tamamlanma sinyalleri üretmiyor veya saat enjeksiyonunu (clock injection) desteklemiyorsa, kırılganlık garantidir.

Durum Kirlenmesi

Temiz API test hook'ları ya da geçici (ephemeral) test verisi izolasyonu olmadan, eşzamanlı test koşuları birbirinin verisine basar. Sonuç: yanlış pozitifler ve yalnızca iki test çakıştığı için var olan bir hatayı kovalayan bitmek bilmez hata ayıklama seansları.

Kırılganlık Mimari Bir Sinyaldir

Test otomasyonu yazmak yalnızca test koşucularını tetiklemek değildir. Kalite mühendisliği, test edilebilirliği sıfırıncı günden birinci sınıf bir mimari kısıt olarak ele almaktır: dağıtık izleme (distributed tracing) ve yapılandırılmış telemetri, bağımlılık enjeksiyonu, kontrat odaklı arayüzler, gevşek bağlı durum yönetimi. Bir test aralıklı olarak patlıyorsa, framework'ü suçlamadan önce yarış koşullarını ve dağıtık durum sınırlarını incele.

Gözlemleyemediğin şeyi test edemezsin. O halde masaya konması gereken soru şu: ekibin yeni bir servis tasarlarken, test edilebilirlik gereksinimleri tasarım dokümanlarına ve RFC'lere açıkça yazılıyor mu, yoksa test işi dağıtımdan sonra kendi başının çaresine mi bırakılıyor?

Dr. Ekrem Erol
Software Quality Architect & Researcher
Kalite bir kontrol noktası değil; mimari bir kısıttır.