⚡ÖZET VE TEKNİK CEVAP
Bir test hiçbir kod değişikliği olmamasına rağmen aynı commit üzerinde bazen geçip bazen kalıyorsa buna 'Kararsız / Güvenilmez Test' (Flaky Test) denir (yarış durumları, asenkron zamanlama hataları veya veritabanı kirliliğinden kaynaklanır). Zayıf takımlarda mühendisler bunu normal bir durum sanır: PR derlemesi patladığında mühendis hiç loglara bakmadan 'Yeniden Çalıştır' butonuna 4 kez basar, tesadüfen yeşil yandığı anda kodu canlıya birleştirir. Bu durum CI/CD'de Kırık Cam Sendromu yaratır: Mühendisler testlere olan tüm inancını kaybeder. Canlıyı çökertecek gerçek bir hata testi patlattığında bile 'Yine kararsız testlerden biridir' diyerek tekrar çalıştırıp bozuk kodu canlıya salarlar. Elit mühendislik takımları Otomatik Test Karantina Yönetişimi uygular:
Sıfır Tolerans Kuralı: Bir test alakasız PR'larda 2'den fazla kez patlarsa bir bot testi derhal Karantina Paketine (@quarantined) taşır.
Temiz ve Hızlı Boru Hattı: Ana CI hattı temiz kalır ve geliştirme kilitlenmez.
Otomatik P1 Düzeltme Bileti: Sahip takıma testi 7 gün içinde tamir etmesi veya silmesi için acil bir görev açılır.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Bir SaaS şirketinin 450 testlik uçtan uca Cypress test paketi vardı. 18 test asenkron animasyonlar ve harici Stripe API gecikmeleri yüzünden kararsızdı. Sonuç olarak açılan PR'ların %65'i rastgele patlıyor ve mühendisler haftada toplam 40 saati testleri tekrar çalıştırmakla harcıyordu. Daha da kötüsü, geliştirici testin yine sebepsiz patladığını sanıp onayladığı için canlıya kritik bir kimlik doğrulama hatası kaçtı. Yazılım Direktörü BuildPulse'ı devreye aldı:
18 kararsız test anında karantinaya taşındı ve ana hattın başarı oranı %99,4'e çıktı,
PR çıkış süresi 4 saatten 12 dakikaya indi, ve
Frontend takımı 18 testi düzgün Cypress kontrolleriyle baştan yazdı. 5 günde tüm testler temizlendi ve CI sistemine olan güven %100 yeniden sağlandı.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaSürekli Entegrasyonda (CI/CD) 'Kararsız / Güvenilmez Test' (Flaky Test) nedir?
Kararsız testleri yönetmede 'Karantina Modeli' (Quarantine Pattern) nedir?
CI/CD Güvenilirliği: Kararsız (Flaky) Testleri Karantinaya Alma Modelleri ve Boru Hattı Güvenini Yeniden Kazanma — Sıkça Sorulan Sorular
Patlayan CI derlemelerinde 'Yeniden Çalıştır' butonuna basmak neden tehlikeli bir mühendislik alışkanlığıdır?
Çünkü mühendislere test hatalarını görmezden gelmeyi öğretir; canlıyı çökertecek gerçek bir hata çıktığında bile yazılımcı testi tekrar tekrar çalıştırarak bozuk kodu canlıya kaçırır.
Web uygulamalarındaki kararsız testlerin en yaygın teknik kök nedeni nedir?
Dinamik asenkron arayüz güncellemelerini beklemek için deterministik kontroller (`waitForElement()`) yerine koda gömülmüş rastgele bekleme süreleri (`sleep(3000)`) kullanılmasıdır.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Kararsız testler CI güvenini yok eder ve gerçek yazılım hatalarının gözden kaçmasına yol açar.
- ▸
Sıfır tolerans uygulayın: Kararsız testleri otomatik olarak Karantina paketine taşıyın.
- ▸
Karantinaya alınan testler geliştiricinin PR derlemesini ASLA durdurmamalıdır.
- ▸
Sahip takımın testi 7 gün içinde düzeltmesi veya silmesi için katı bir süre sınırı koyun.
Yaygın Yanılgılar
- ✗
Yanılgı: Tüm testlere otomatik 3 kez tekrar deneme (
retry: 3) koymak kararsızlığı çözer (Gerçek: Tekrarlar yarış durumlarını maskeler, derlemeyi uzatır ve canlı hatalarını gizler). - ✗
Yanılgı: Büyük yazılım projelerinde kararsız testlerin olması kaçınılmazdır (Gerçek: Kararsızlık test mimarisindeki ciddi bir hatadır; elit ekiplerde bu oran %0,1'in altındadır).
Karar Kılavuzu & Önceliklendirme
CI/CD boru hattına olan güveni %100 yeniden kazanmak için deterministik olmayan testleri anında izole eden otomatik tespit ve karantinaya alma araçlarını kurun.
Doğrulanmış Kaynaklar & Referanslar
- [ARTICLE]Google Testing Blog: Where do our flaky tests come from & How to mitigate them— Google Testing Technology Blog
