Page Object Model (POM) — otomasyon test kodunun organizasyonu için bir mimari şablondur, özellikle UI testlerinde. Uygulamanın her sayfasını mantıksal bir şekilde temsil etmek için ayrı sınıflar veya nesneler oluşturmayı önerir ve bunlarla etkileşimde bulunmak için yöntemler tanımlar.
Konuya Giriş: Daha önce otomatik testler “olduğu gibi” — testlerin içinde elementlerin konumlandırıcılarıyla doğrudan etkileşimde bulunarak yazılıyordu, bu da kod tekrarına ve zor bir bakıma yol açıyordu. POM ile belirli bir sayfayla ilgili her şeyi ayrı bir sınıfa taşımak mümkün hale geldi ve otomatik testlerin bakımı daha kolay hale geldi.
Problemi: Büyük projelerde testlerin yapılandırılmaması "dağınık" kodun hızla birikmesine neden olur. Arayüzde yapılan herhangi bir değişiklik, sayısız testin güncellenmesini gerektirir, bu da bakım maliyetlerini artırır.
Çözüm: POM, eylemleri ve elementleri merkezi olarak yönetmeyi, tekrarı azaltmayı, test altyapısının ölçeklenmesini kolaylaştırır. Örneğin, bir butonun konumlandırıcısını değiştirmek istediğinizde, değişiklik sadece bir yerde — Page Object içinde yapılır, tüm testlerde değil.
Ana özellikler:
POM şablonunu kullanmadan otomatik testler yapılabilir mi?
Evet, ama bu yaklaşım kod tekrarına, yüksek bakım maliyetlerine ve ölçeklenme sorunlarına yol açacaktır.
Her sayfa elemanını ayrı bir Page Object'e taşımak zorunlu mu?
Hayır, Page Object mantıksal sayfalar için, ilgili elementleri ve eylemleri içermek üzere oluşturulur, bazen küçük tekrar eden bloklar için ayrı yardımcı varlıklar (örneğin, bileşenler) kullanılabilir.
POM, otomatik testlerin tüm mimari sorunlarını çözer mi?
Hayır, arayüzlerle olan etkileşimlerin mantığını yapılandırmaya yardımcı olur, ancak test çerçevesinin tam mimarisini tanımlamaz — örneğin, veri işleme, rapor oluşturma ve uygulama durumunu yönetme gibi konuları kapsamaz.
Otomatik testler POM olmadan yazıldı — tüm eylemler doğrudan test metotlarında tanımlandı. Sonuç olarak bir sayfadaki butonun id'sinin basit bir değişikliği 35 testin güncellenmesini gerektirdi, bunların birçoğu hatalı hale geldi, diğerleri ise çalışmayı durdurdu.
Avantajlar:
Dezavantajlar:
Yeni projede testler POM'a göre yapılandırıldı: sayfa sınıfları eklendi, elementlerle etkileşim kapsüllendi, ortak desenler için miras kullanıldı.
Avantajlar:
Dezavantajlar: