Karmaşık UI bileşenlerini test etmek, otomasyonda en zor görevlerden biridir.
Sorunun Tarihçesi: Ön uç geliştirme, SPA'ların, sürükle-bırak işlemlerinin, dinamik tabloların ve uyumlu UI'lerin ortaya çıkmasıyla birlikte manuel iş görmeye dayalı çalışmalar yorucu ve verimsiz hale gelmektedir. Otomasyon, rutin kontrollerden kurtarır, ancak tam bir kapsama almak için düşünülmüş stratejilere ihtiyaç vardır.
Problem:
Çözüm:
UI ile esnek bir şekilde çalışmak için özel araçlar kullanın: Selenium, Cypress, Playwright; "görsel" testler için Percy, Applitools.
Page Object Model uygulamak, mantık ve lokatorları ayırt etmek, dinamik beklemeler (waits, retries) kullanmak.
Karmaşık etkileşimli bileşenler için tarayıcının düşük seviyeli API’leri (örneğin, JS betikleri veya WebDriver Eylemleri aracılığıyla) ile etkileşimde bulunmak:
# Selenium WebDriver ile Sürükle & Bırak from selenium.webdriver import ActionChains action = ActionChains(driver) action.click_and_hold(source).move_to_element(target).release().perform()
Anahtar özellikler:
Kullanıcı arayüzünü yalnızca öğelere "tıklama" (klik ve giriş) ile test etmek yeterli mi?
Hayır. Gizli durumları, ipuçlarını, farklı çözünürlüklerdeki oluşturmayı ve hatta animasyonların veya düzen hatalarının varlığını kontrol etmek gerekir.
Tüm öğeleri bulmak için yalnızca Xpath kullanılabilir mi?
Hayır. Xpath her zaman okunabilir değildir, yavaştır ve yapı değiştiğinde bozulabilir. CSS seçicileri, data-test-id, automationId kullanın - bunlar daha kararlıdır.
Görsel otomatik testler bileşenlerin çalışabilirliğini garanti eder mi?
Hayır. Görsel testler UI hatalarını yakalar, ancak iş mantığını, tıklanabilirliği ve doğru etkileşimi kontrol etmez.
Selenium kullanarak karmaşık çok katmanlı bir tabloyu yalnızca Xpath kullanarak otomatikleştirdik. Her sürüm lokatörleri kırdı, otomatik testler kitlesel olarak başarısız oldu. Görsel testler yoktu, düzen hataları görülmedi.
Artıları:
Eksileri:
Sürükle-bırak bileşenini test etmek için Playwright kullandık ve tarayıcıda olayları mock'ladık. Görünümün doğrulanması için - Percy. UI katmanlarını Page Object deseni ile kapsadık.
Artıları:
Eksileri: