Otomasyon QAFrontend test otomasyon mühendisi, QA Mühendisi

Karma karma otomasyonu kullanarak karmaşık UI bileşenlerini test etmenin yaklaşımları nelerdir ve bu yaklaşımların özellikleri nelerdir?

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

Cevap.

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:

  • Dinamik öğeler genellikle lokatorları, DOM yapısını, sınıfları ve stilleri çalışma zamanında değiştirir.
  • Sürükle-bırak etkileşimleri, kanvasla çalışma, farklı cihazlarda uyumluluk ve animasyonu otomatik testlerle emüle etmek zordur.
  • Testler, asenkron davranış ve yeniden oluşturma gecikmeleri nedeniyle kırılgan hale gelir (flaky).

Çözüm:

  1. UI ile esnek bir şekilde çalışmak için özel araçlar kullanın: Selenium, Cypress, Playwright; "görsel" testler için Percy, Applitools.

  2. Page Object Model uygulamak, mantık ve lokatorları ayırt etmek, dinamik beklemeler (waits, retries) kullanmak.

  3. 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:

  • Dayanıklı ve benzersiz lokatorların gerekliliği.
  • UI "drift"ini tespit etmek için görsel testlerin kullanımı.
  • "Flaky" ile başa çıkmak için asenkron beklemeler (explicit waits, custom waits).

Tüp Sorular.

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.

Tipik Hatalar ve Anti-Desenler

  • Lokasyonların kopyalanıp kullanılmadan yeniden kullanılmaması ve soyutlamalar.
  • Çok "geniş" (benzersiz olmayan) veya dayanıklı olmayan lokatörlerin kullanılması.
  • Asenkron yükleme ve gecikmelerin özelliklerinin göz ardı edilmesi.
  • CI'de "parlayan" UI testleri, verilerin mock'ları/fixture'leri olmadan çalıştırılması.

Gerçek Hayattan Bir Örnek

Olumsuz Durum

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ı:

  • Hızlı başlama, testler ilk ciddi yeniden yapılandırmaya kadar çalıştı.

Eksileri:

  • Destek mümkün değil, düzeltme maliyeti yüksek, düşük geri dönüş, önemli hatalar gözden kaçtı.

Olumlu Durum

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ı:

  • Uzun ömürlü testler, UI hatalarını yüksek doğrulukla tespit etme, genişletme kolaylığı.

Eksileri:

  • İlk entegrasyon zorluğu, mock'ların ve görsel referansların oluşturulması için zaman maliyeti.