Otomasyon QAQA Mühendisi / Otomatik Test Geliştirici

Güvenilir bir şekilde kararsız otomatik testlerin (flaky tests) tespitini ve işlenmesini nasıl gerçekleştirebiliriz?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

Flaky testler, kodda herhangi bir değişiklik olmaksızın geçebilen veya başarısız olabilen testlerdir ve bu durum rastgele dış faktörlerden kaynaklanır. Otomasyona olan güveni sarsar ve CI/CD süreçlerini zorlaştırır.

Soru tarihçesi: Flaky testler ile sorun, kitlesel E2E, entegrasyon ve UI testlerinin ortaya çıkmasıyla bağlamda yaşanmıştır; burada çevrenin ve bağımlı servislerin stabilitesi garanti edilmemektedir. Başlangıçta bu tür hatalar görmezden gelinmiş veya "manuel olarak yeniden başlatılmıştır".

Sorun:

  • Flaky testler otomatik testlerin güvenilirliğini azaltır.
  • Geliştiriciler gerçek hataları yanlış alarm olarak geçiştirmeye başlar.
  • Testlerin bakımı için gereken süre artar ve kararsız sonuçların manuel olarak incelenmesi gerekir.

Çözüm:

  1. Flaky testlerin ayrı takibi. Etiketlenir (örneğin, @FlakyTest) veya ayrı bir kategoriye ayrılır.
  2. Otomatik yeniden çalıştırma. Test düştüğünde, X kez tekrar edilir — eğer her zaman düşmüyorsa, test kararsız olarak işaretlenir.
  3. Kararsızlığın nedenlerini analiz etme: günlüklerin, durum anlık görüntülerinin ve kaynak izleme (örneğin, kararsız ağ, kuyruklar veya GC'nin çalışması) kullanılması.
  4. Aşamalı düzeltme: test ortamıyla çalışma, senaryoları basitleştirme, kararsız bağımlılıkları mocklama.

Otomatik yeniden deneme için kod örneği:

import pytest @pytest.mark.flaky(reruns=3, reruns_delay=2) def test_random_fail(): ... # test kodu

Anahtar özellikler:

  • Flaky testleri gerçek hatalardan ayırmak önemlidir.
  • Sadece "her şeyi yeniden denemek" doğru değildir — gerçek hatalar göz ardı edilmemelidir.
  • Testin durumu düzenli olarak analiz edilip belgelenmeli, göz ardı edilmemelidir.

Aldatıcı sorular.

Flaky testler her zaman altyapı sorunlarıyla mı ilişkilidir?

Hayır, flaky sorunları iş mantığı hataları, kodda yarış koşulları, asenkronluk veya zaman yönetimindeki hatalardan kaynaklanabilir.

Başarısız olan testleri yeniden çalıştırmak yeterli midir?

Hayır, yeniden denemeler yalnızca sorunu maskeleyebilir. Nedenlerini bulmak ve gidermek gereklidir.

Tüm kararsız testleri silmek gerekli mi?

Hayır, geçici olarak izole edilmeli ve nedenleri düzeltilmelidir, sonsuza dek çıkarılmamalıdır.

Tipik hatalar ve anti-patentler

  • Flaky testlerin göz ardı edilmesi, ciddi hataların kaçırılmasına neden olur.
  • Sebep analiz edilmeden kitlesel yeniden deneme yapılması.
  • Önemli testlerin flaky olarak işaretlenmesi ve düzeltici eylemde bulunmamak.

Hayattan bir örnek

Olumsuz vaka

Proje içinde flaky testler sadece işaretlenmiş ve daha fazla müdahale edilmemiştir; sorun "çözülemez" olarak değerlendirilmiştir.

Artıları:

  • Yanlış "kırmızı" derlemelerin sayısında azalma

Eksileri:

  • Gerçek hatalar üretime gider
  • Sonuçların sürekli manuel kontrol edilmesi

Olumlu vaka

Her kararsız test için otomatik yeniden deneme ve kararsızlığın iç takibi sağlanmıştır. Sebepler üzerine düzenli ortak incelemeler yapılmış ve hatalar biriktikçe düzeltilmiştir.

Artıları:

  • Test sisteminin stabilitesinde aşamalı iyileşme
  • Yeni flaky testlerin hızlı tespiti ve düzeltilmesi

Eksileri:

  • Kararsızlık analizine düzenli kaynaklar gerekmektedir.