Web tabanlı bir tasarım aracında çalışan yapay zeka destekli QA testi, “Tüm özellikler çalışıyor, geçti” raporu verdi; ancak tuval (canvas) hiçbir şey göstermiyordu. Bu hatalı “geçti” sonucu, modelin muhakemesindeki bir hata değil; tarayıcının gizli sekmeleri işleme biçiminin ve test betiğinin görsel çıktı yerine “sağlık” durumunu ölçmesinin bir yan etkisidir.

Yapay zeka QA ajanları neden boş bir tuvali gözden kaçırabilir?

JavaScript çalıştırırlar, ekran görüntüleri alırlar ve modelin bir özelliğin doğru çalışıp çalışmadığını tahmin etmesine izin verirler. Uygulamada, iki teknik kör nokta, kullanıcı arayüzü (UI) aslında boş olduğunda sürekli olarak “geçti” sonucu üretir.

Gizli sekme kısıtlaması (throttling) açıklaması

Chrome MCP, ana pencereyi diğer işler için boş tutmak amacıyla testleri genellikle arka plan sekmelerinde çalıştırır. Bir sekmenin document.visibilityState değeri hidden (gizli) olduğunda, tarayıcı işleme (rendering) hattını kısıtlar:

  • JavaScript çalışmaya devam eder, bu nedenle çalışma zamanı hataları görünmez.
  • requestAnimationFrame geri çağırmaları (callbacks) durur ve animasyon kare sayısı sıfırda kalır.
  • Zamanlayıcılar çok daha seyrek çalışır; 33 ms aralıklar bekleyen bir test sadece dört tane gözlemleyebilir.

Yapay zeka ajanı temiz JS sonuçlarını ve bir ekran görüntüsünü görür ve animasyonun çalıştığını varsayar. İşleme döngüsü hiçbir zaman piksel üretmediği için görsel kusur gizli kalır.

Gizli sekme sorunları için çözümler

  • Herhangi bir tuval, animasyon veya grafik doğrulaması için test sekmesini görünür tutun.
  • Etkileşimleri yalnızca sekme ön planda olduğunda tetikleyin.
  • Ekran görüntüsünü almadan önce kısa bir bekleme süresi (birkaç saniye) ekleyerek kare tamponunun (frame buffer) doldurulduğundan emin olun.
  • Eğer gizli bir sekme kullanılması gerekiyorsa, rapora “işleme görsel olarak gözlemlenmedi” gibi bir feragatname ekleyin.

Kod sağlığı vs. özellik davranışı

Çoğu yapay zeka QA betiği “kod sağlığını” değerlendirir: tıklama işleyicilerinin (click handlers) bağlı olduğunu, hiçbir JavaScript istisnası (exception) fırlatılmadığını ve gerekli kütüphanelerin yüklendiğini onaylarlar. Bu sinyaller kodun çalıştığını kanıtlar, ancak kullanıcı arayüzünün (UI) amaçlandığı gibi değiştiğini kanıtlamaz. Bir tuval (canvas) öğesi oluşturulabilir, bir çizim rutini çağrılabilir ve eğer çizim komutları sıfır boyutlu bir tamponu veya boş bir varlığı hedefliyorsa yine de hiçbir şey çizilmeyebilir.

Bu ayrım önemlidir çünkü sağlıklı bir kod yolu, eksik bir görsel kusuru maskeleyebilir.

Davranış kontrolleri ekleme

  1. Dinamik öğeleri belirleyin – Kaynakta canvas etiketlerini, dosya giriş (file-input) alanlarını, indirme düğmelerini ve animasyon döngülerini tarayın.
  2. Gözlemlenebilir sonuçlar tanımlayın – Bir tuval için, bit eşlemin (bitmap) boş olmadığını kontrol eden piksel düzeyinde bir doğrulama isteyin. Bir dosya girişi için, bir önizleme görüntüsünün göründüğünü doğrulayın. Bir indirme işlemi için, dosya sisteminde bir dosyanın oluşturulduğunu onaylayın. Animasyonlar için, takip edilen bir özelliğin zamanla değiştiğini teyit edin.
  3. Kapsam raporu sunun – QA çıktısına her bir özelliği, kod sağlığı durumunu ve davranış doğrulama sonucunu listeleyen bir tablo ekleyin. Davranış kontrolü eksik olan her şey “geçti” yerine “doğrulanmadı” olarak kalmalıdır.

Bu kuralın uygulanması, yazarın test paketindeki hatalı pozitifleri (false positives) önemli ölçüde azalttı ve ayrıca stil sayfasının bir renk bildirdiği ancak işlenen pikselin farklı olduğu CSS uyumsuzluklarını ortaya çıkardı.

Güvenilir görsel testler için pratik adımlar

  • Testleri görünür bir sekmede çalıştırın: Özellik işleme (rendering) içerdiğinde testleri her zaman görünür bir sekmede çalıştırın.
  • UI'ın durulmasını bekleyin: Birkaç saniyelik sabit bir gecikme genellikle yeterlidir, ancak daha sağlam bir yaklaşım getImageData kullanarak boş olmayan bir tuval için sorgulama (polling) yapmaktır.
  • Kod sağlığı doğrulamalarını görsel doğrulamalardan ayırın: Test betiğinde kod sağlığı doğrulamalarını görsel doğrulamalardan ayırın; yapay zeka modelinin her birini bağımsız olarak değerlendirmesine izin verin.
  • Görünürlük durumunu günlüğe kaydedin: Tanılama çıktısının bir parçası olarak görünürlük durumunu ve kare sayaçlarını (requestAnimationFrame çağrılarını) günlüğe kaydedin.
  • Kaçınılmaz gizli sekme çalıştırmalarını belgeleyin: Sınırlamaların sonraki inceleyiciler tarafından anlaşılması için kaçınılmaz gizli sekme çalıştırmalarını açık uyarılarla belgeleyin.

Sırada neye dikkat edilmeli?

Yapay zeka destekli QA araçları yaygınlaştıkça, geliştiriciler onlara hakem olarak değil, asistan olarak yaklaşmalıdır. Kod sağlığı metrikleri, kullanıcıya yönelik davranışlar için her zaman eksik bir gösterge olacaktır. Çıkarılacak ders basittir: Bir yapay zeka modeli yalnızca gördüğünü raporlayabilir. Eğer sekme gizli olduğu için tarayıcı hiçbir şey çizmiyorsa veya test betiği “ekranda bir şey belirdi mi?” diye sormuyorsa, model memnuniyetle başarı ilan edecektir. Bir görünürlük gereksinimi ve bir davranış doğrulama adımı eklemek, parlak bir “geçti” sonucunu güvenilir bir sonuca dönüştürür.