Otomasyon QAFrontend otomasyonu test mühendisliği / QA Automation Engineer

Dinamik beklentilerle otomatik UI testlerinde en iyi uygulamalar nelerdir?

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

Cevap.

Dinamik beklentilerle çalışmak, modern web uygulamalarında içerik genellikle anında görünmediği için, UI otomasyonunun önemli bir sorunudur.

Konu Otomasyonda erken versiyonlarda sert beklentiler (sleep) kullanılıyordu, bu da testlerin ya çok yavaş olmasına ya da uygulamalar normalden daha uzun sürede yüklendiğinde dalgalanmalara yol açıyordu. Bu, SPA ve ağır JS döneminde önemli bir sorun haline geldi.

Sorun Statik gecikmeler kullanmak, istikrarsız testlere ve zaman kaybına yol açar: otomatik testler yavaşlayabilir veya rastgele "başarısız" olabilir. Ayrıca, testlerin ölçeklenebilirliği ve bakımı zarar görür.

Çözüm Dinamik (açık) beklentiler kullanmak: örneğin, Selenium'daki WebDriverWait, Cypress ve Playwright çerçevelerindeki waitFor fonksiyonları.

from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) # maksimum bekleme süresi 10 saniye wait.until(EC.visibility_of_element_located((By.ID, 'my-element')))

Ana özellikler:

  • Açık beklentileri sadece gerektiğinde kullanmak
  • Aynı olay için beklentileri tekrarlamamak
  • Beklemenin sona ereceği koşulları net bir şekilde tanımlamak (görünür/tıkladır vb.)

Yanıtlar.

Dinamik beklentiler varken sleep neden gerekli?

time.sleep() kullanımı yalnızca hata ayıklama veya acil durumlar için geçerlidir. Gerçek otomatik testlerde her zaman açık beklentiler yapılması daha iyidir.

Beklentilerin kullanımı dalgalanmaları tamamen ortadan kaldırabilir mi?

Hayır, eğer bekleme koşulları yetersiz tanımlanmışsa (örneğin, bir özellik bekliyorsak, ancak verilerin tam yüklenmesini beklemiyorsak), dalgalanmalar devam eder.

Tüm testler için tek bir küresel bekleme yapılabilir mi?

Hayır – unsurların görünüm koşulları farklıdır. Beklentiler yalnızca gerekli adımlara uygulanmalıdır.

Yaygın hatalar ve anti-patrenler

  • Beklentiler yerine sleep kullanmak
  • Gereksiz yerlerde tekrarlayan beklentiler
  • Gerçek hataların tespitini engelleyen çok uzun zaman aşımları

Gerçek hayaktan örnek

Olumsuz vaka

Tüm otomatik testler arasında "tıklama" ve kontrol arasında sleep(2) ile yazılmıştı. Sayfa güncellendikten sonra kullanıcılar gecikmelerden şikayet etti ve testler bazen yavaş internet nedeniyle başarısız oldu.

Artılar:

  • Bekleme kodu olmadan testler basit

Eksiler:

  • Testler uzun sürüyor
  • Dalgalı düşmeler
  • Uygulamanın gerçek hızına uyum sağlayamazlar

Olumlu vaka

Gerekli bloklar yüklendiğinde tıklamanın mümkün olabilmesi için açık beklentiler ayarladık. sleep kullanmaktan vazgeçtik, tüm testler istikrarlı ve hızlı geçiyor.

Artılar:

  • Minimum dalgalanma
  • Hızlı yürütme
  • Harika okunabilirlik ve destek

Eksiler:

  • Bekleme koşullarının doğru ayarlanması için zaman harcamak gerekebilir.