Sayfa Nesnesi Modelini Kullanmanın Yaygın Zorlukları ve Tuzakları Nelerdir ve Bunları Nasıl Aşabilirsiniz?
Yayınlanan: 2023-11-27Selenyum tasarım modeli, sayfa öğelerini ve nesnelerini barındırmak ve düzenlemek için bir nesne deposu oluşturmayı içeren Sayfa Nesnesi Modeli veya POM olarak bilinir. Web/mobil otomasyon alanında oldukça kullanılan bir tasarım modelidir. Verimli Selenyum otomasyon testi, Sayfa Nesnesi Modelini etkili bir şekilde kullanmanızda size çok yardımcı olabilir.
POM, test edilen sayfa için bir arayüz görevi görerek koddaki karmaşıklığı ve fazlalığı en aza indirirken aynı zamanda genişletilebilirliğini ve test komut dosyası bakımını da geliştirir. POM konseptini basitleştirmek amacıyla her web sayfası için bir sınıf dosyası oluşturuyoruz. Web sayfasında bulunan ve test komut dosyaları tarafından çeşitli görevleri gerçekleştirmek için kullanılabilen web öğeleri, sınıf dosyasında bulunur.
Sayfa Nesne Modelini Kullanmanın Yararları
Test otomasyon çerçevesinin uygulanması sırasında ortaya çıkabilecek sorunları çözmek için önerilen yöntem Sayfa Nesnesi Modelidir. Sağladığı faydaların listesi şu şekildedir:
- POM, web öğelerinin basit şekilde eklenmesini, değiştirilmesini ve yeniden kullanılmasını kolaylaştıran nesne depoları oluşturmayı mümkün kılar. Web öğesinin adı ve kod her incelendiğinde onu aynı konuma yerleştirecek konumlayıcılar bu nesne deposunda bulunur.
- POM'da her web sayfası ayrı bir sınıf olarak temsil edilir. Bir web sayfasında herhangi bir ek web öğesi varsa, bunları eklemek, web sayfasıyla aynı adı paylaşan bir sınıfa gitmek kadar basittir. Örneğin: Müşteri Sayfası nesne deposuna eklemek için customerClass.java dosyasında yeni bir web öğesi arayabilir ve ekleyebilirsiniz. Aynı durum, bir web sayfasının web öğesi değiştiğinde konum belirleyicilerin değiştirilmesi için de geçerlidir.
- Ayrıca nesne deposunda hiçbir test komut dosyası bulunmamaktadır. Test komut dosyaları oluşturmak için gereken belirli nesne deposundaki tüm nesneleri çağırın. Bir öğe kullanılıncaya kadar web öğelerinin yerini tespit edemez. Verimliliği en üst düzeye çıkarmak için, tembel başlatma, nesneleri oluşturmayı onlara ihtiyacımız olana kadar ertelememize olanak tanır. Bunu yapmanın ana gerekçesi, nesneye ihtiyacınız yoksa genellikle onu oluşturmaktan kaçınabilmenizdir.
- Sayfa sayfa alan segmentasyonu, bir Nesne Havuzu oluşturmanıza olanak tanır. Sonuç olarak, uygulamada her sayfanın bir Java sınıfı olarak tanımlandığı bir Sayfa Havuzu bulunur. Bir arayüz, sayfanın alanlarını üyeler olarak tanımlar ve ardından sınıf, arayüzü uygular.
- Bir sayfada gerçekleştirilebilecek her eylemi veya özelliği, o sayfaya özel olarak yapılmış tek bir sınıfta oluşturma ve kapsülleme işlemi, işlevsel kapsülleme olarak bilinir. Bu, her sayfada mevcut olan işlev aralığını belirlemeyi ve kavramayı kolaylaştırır.
- Hem arayüz hem de sınıf hızlı bir şekilde güncellenebildiğinden, herhangi bir önemli değişiklik, önemli bir bakım gerektirmeden kolayca uygulanabilir. Nesneye yönelik doğası nedeniyle çerçeve daha okunabilir ve güvenilir kod üreterek onu daha programcı dostu hale getirebilir.
- Düşük Artıklık özelliği kod tekrarı miktarının azaltılmasına yardımcı olabilir. Mimari eksiksiz ve iyi tanımlandığında POM, daha az kodla daha fazlasını başarabilir. Etkili ve genişletilebilir: Veri veya anahtar kelimeye dayalı testler için Excel belgelerinin yorumlanmasına veya oluşturulmasına dayanan alternatif teknikleri geride bırakır.
Sayfa Nesne Modelini Kullanmanın Dezavantajları
Otomasyon Çerçevesinin geliştirilmesi, birden fazla sayfaya sahip web uygulamaları için sayfa nesne modelinin (POM) oluşturulması amacıyla başlangıçta önemli bir çaba taahhüdü gerektirecektir. Bu büyük bir görev olsa da, uygulama geliştirme süreciyle birlikte yürütülmesi tavsiye edilir.
Deneyimsiz test uzmanlarını, dağıtım sırasında eğitilecekleri beklentisiyle işe almak büyük bir hatadır. Bu tür kabusları önlemek için programlamadaki en iyi uygulamaları anlayan, teknik açıdan yetkin test uzmanlarına sahip olmak zorunludur. Vasıfsız test uzmanlarının bu göreve hazırlanmak için bir Eğitim Eğitim Kampına katılmaları gerekir.
Ayrıca, geliştirmenin sonraki aşamalarında herhangi bir boşluktan kaçınmak için, geliştirmeye başlamadan önce çerçevenin mimarisini tam ve kesin olarak tanımlamak zorunludur. Her uygulama farklı olduğundan, ihtiyaçlarının karşılanması için otomasyon çerçevesinin önemli ölçüde özelleştirilmesi gerekebilir.
POM tekniği kullanılarak geliştirilen Otomasyon Çerçevesi genel bir model olmaktan ziyade uygulamaya özel olarak uyarlanmıştır. Uygulamaya özel veri odaklı veya anahtar kelime odaklı çerçevelerle aynı şey değildir.
POM, dezavantajlarına rağmen genellikle web uygulamaları oluşturmak için en etkili yaklaşım olarak kabul edilir. Çerçeve geliştikçe, diğer veriye dayalı veya anahtar kelimeye dayalı teknikler yerine POM'un kullanılması, hibrit bir çerçeveye geçişi kolaylaştırabilir.
Örneğin bakım açısından bakıldığında, geliştiricilerin Oturum Açma sayfasında yaptığı değişiklikler, oturum açma işleminin işleyişiyle doğrudan ilişkili testleri etkileyebilir. Geri kalan testler farklı işlevleri test etmek için yalnızca Oturum Açma özelliğini kullandığından bu değişikliklerden etkilenmezler. Geri kalan testlerin etkilenmemesini garanti etmek için, diğer sayfa öğelerinin değişmesi durumunda bile Giriş özelliğinin düzgün çalıştığından emin olmak zorunludur.
Test sürecinin ana hedefi ürün kalitesini iyileştirmektir ve otomasyon testi, sorunları bulup geliştirme ekibine bildirerek bu hedefe ulaşmak için çok önemlidir. Test otomasyonu kapsamı, bir yazılım geliştirme metodolojisinin izlenip izlenmediğine bakılmaksızın test kodunun etkinliğini değerlendirmek için çok önemli bir Temel Performans Göstergesidir (KPI).
POM'un Yaygın Tuzakları
POM ile ilgili sık karşılaşılan sorunlardan bazıları şunlardır:
- Uygulamanın yüzlerce veya binlerce web sayfası varsa, bir otomasyon çerçevesinin oluşturulması önemli miktarda zaman ve çaba gerektirecektir.
- Büyük sınıfların sürdürülmesi tasarım ilkesini ihlal ettiğinden, bakım masraflarıyla birlikte maliyetler de artıyor.
- Test uzmanlarının en iyi uygulamaları programlama konusunda son derece bilinçli olmaları gerekir çünkü çok sayıda sayfa için bir POM çerçevesi oluşturmak geliştiricilerin emeğine eşdeğerdir.
- Sayfa nesnesi modeli uygulamaya özeldir ve doğası gereği genel değildir.
POM'un dezavantajları nasıl aşılabilir?
POM kavramını Senaryo Kalıbına göre yeniden düzenlemek, yukarıda belirtilen sorunların üstesinden gelmenin en etkili yoludur. İlk iki SOLID tasarım ilkesi olan Tek Sorumluluk İlkesi ve Açık-Kapalı İlkesi, mükemmel otomatik kabul testleri oluşturmaya yönelik bir yöntem olan Senaryo Modeli'nin temelini oluşturur. Senaryo modelini anlamadan önce ilk iki “KATI” prensibini gözden geçirelim.
- Tek sorumluluk ilkesi, bir sınıfın yalnızca bir göreve sahip olması gerektiğini ve katlarının olmaması gerektiğini, çünkü birini değiştirmenin katlar üzerinde etkisi olabileceğini belirtir.
- Mevcut bir sınıftaki eskisini güncellemek yerine, bir ihtiyaç eklendiğinde veya değiştirildiğinde yeni bir sınıf geliştirilmelidir. Bunun nedeni, bir bileşende yapılan değişikliklerin süreçteki diğer değişiklikleri tetikleyebilmesidir. Prosedürün tamamı Açık-Kapalı Prensibi olarak bilinir.
QA otomasyonu için çok sevilen bir tasarım modeli olan Sayfa Nesnesi Modeli (POM), web testleriniz için yeniden kullanılabilir ve bakımı yapılabilir kod yazmanıza yardımcı olur.
● POM optimal prosedürleri
POM ile başarılı QA otomasyonunu garantilemek için uymanız gereken önerilen uygulamalar ve kurallar vardır. Boyut ve şekil arasında denge kuran sayfa nesneleri tek sorumluluk düşüncesiyle üretilebilir. Yöntemlerin, yer belirleyicilerin ve sayfa nesnelerinin adları da bir adlandırma kuralına uymalı ve açıklayıcı olmalıdır. Ek olarak, web öğeleri genel görünümden gizlenmeli ve yalnızca sayfa nesnesinin işlevleri aracılığıyla erişilebilir olmalıdır. Page Factory tasarımını uygulamak için Selenium veya TestNG gibi çerçevelerin kullanılması, kodun kolaylaştırılmasına ve test verimliliğinin artırılmasına yardımcı olur.
● POM tavsiyeleri ve yöntemleri
POM uygulamanızı geliştirmek ve QA otomasyonunuzun etkinliğini ve verimliliğini artırmak için birkaç stratejiden yararlanabilirsiniz. Örneğin, sayfa nesnelerinin işlevleri kalıtım ve kompozisyon yoluyla genişletilebilir ve yeniden kullanılabilir. Akıcı arayüzler kodun okunabilirliğini, ifade edilebilirliğini ve anlaşılırlığını geliştirmeye yönelik başka bir araçtır. Ayrıca web uygulaması ile test arasındaki senkronizasyon sorunları örtülü, açık veya akıcı beklemeler gibi bekleme teknikleri kullanılarak çözülebilir. Özel bekleme teknikleri, benzersiz veya karmaşık durumları yönetmek için de kullanılabilir.
Otomatik testler yazmak herhangi bir çevik yazılım geliştirme ekibi için yalnızca bir lüks değil, aynı zamanda bir gerekliliktir. Yeni bir özelliğin geliştirme süreci sırasında geliştiriciler, değişikliklerin sistemin diğer alanlarını nasıl etkilediğini gözlemlemek için otomatik testler kullanabilir. İşte bu noktada otomasyon testi hayati bir rol oynayabilir.
LambdaTest gibi otomatik test platformları, yazılım geliştirme döngülerinin ilk aşamalarında hataların hızlı bir şekilde tespit edilmesi açısından çok önemlidir. LambdaTest, testleri paralel olarak çalıştırarak yalnızca test yürütme sürenizi kısaltmakla kalmayacak, aynı zamanda tarayıcı kapsamınızı da geliştirerek Chrome ve Safari tarayıcıları gibi 3000'den fazla test ortamına çevrimiçi erişmenizi sağlayacaktır.
Yazılım Kalite Güvencesi (QA) geliştirilebilir ve test otomasyonu yoluyla sorun çözümleri daha ucuz hale getirilebilir. Testler doğru şekilde yapıldığında geliştiriciler, hataları QA görmeden önce tanımlayıp düzeltebilir. Ayrıca test otomasyonunu kullanarak regresyon özelliklerini ve test senaryolarını da otomatikleştirebiliriz. Bunun sonucunda QA mühendislerine uygulamanın diğer alanlarını test etmek için ekstra zaman verilecek. Ayrıca bu, üretim sürümleri için ürünün kalitesini garanti eder. Sonuç olarak, daha etkili ve istikrarlı ürünler ve daha verimli kalite güvence yöntemleri elde ediyoruz.
Geliştiriciler ve mühendisler için otomatik testler geliştirmek basit bir işlem gibi görünebilir, ancak sonuçların kötü oluşturulmuş testlerden ve bakımı yetersiz kodlardan kaynaklanma ihtimali hala vardır. Herhangi bir çevik geliştirme projesinde, özellikleri veya değişiklikleri her zaman göndermeye çalışmak, test söz konusu olduğunda pahalı olabilir. Bir web sayfasındaki bir öğe değiştirilirse ve 20 test buna bağlıysa, 20 test rutininin tümü yeni öğeyi yansıtacak şekilde güncellenmelidir. Bu çok zaman alır ve bu da geliştiricilerin otomatik testleri mümkün olan en kısa sürede uygulamaya koymasını engeller.
Son sözler
Selenium Web Sürücüsünde en öne çıkan tasarım modellerinden biri Sayfa Nesnesi Modeli'dir (POM). Web siteleri ve e-Ticaret sitelerindeki çok sayıda sayfanın otomatikleştirilmesinden kaynaklanan komut dosyası bakımı ve kod çoğaltma sorunları, bu model tarafından en iyi şekilde ele alınır. POM, komut dosyaları komut dosyası yazılabilir olduğundan e-Ticaret sitelerini otomatikleştirmek için test otomasyonu tarafından kullanılır.
Salatalık ile birleştirildiğinde POM, e-Ticaret sitelerinde yalnızca işlevsel testler için değil aynı zamanda kabul edilebilirlik testleri için de kullanılabilir. POM, kodun okunabilirliğini, yeniden kullanılabilirliğini ve sürdürülebilirliğini artırmaya yardımcı olur, ancak aynı zamanda bazı zorluklar da sunar.
POM, QA otomasyonu için yararlı bir araçtır ancak çözülmesi gereken bazı eksiklikleri ve sorunları vardır. Web bölümlerini bulmak zorlu ve zaman alıcı olabilir ve web uygulaması geliştikçe sayfa nesnelerinin bakımı zorunludur. Ayrıca sayfa nesneleri tarayıcı veya ortam gibi diğer öğelere bağlı olabileceğinden bağımlılıklarını yönetmek kritik öneme sahiptir. Sayfa nesneleri arasında dairesel referanslardan veya güçlü bağlantılardan kaçınılmalıdır.