Sobes.tech
Senior

Policy Model (PM) nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Otomatik test bağlamında Politika Modeli (PM), Sayfa Nesnesi Modeli'nin (POM) bir genişlemesidir. Ana fikir, sayfa öğeleriyle etkileşim kurmak için kullanılan politikaları veya iş kurallarını (ve bu politikalarla ilişkili davranışları) sayfa nesnelerinden ayırmaktır.

Sayfa Nesnelerine doğrudan doğrulama ve karmaşık mantık eklemek yerine, bu kurallar ayrı sınıflara veya modüllere — Politika Nesnelerine — taşınır.

Bu yaklaşımın avantajları:

  • Daha iyi okunabilirlik: Test senaryoları, tanımlanan eyleme odaklandığı için daha basit ve anlaşılması kolay hale gelir, doğrulamaya değil.
  • Yeniden kullanılabilirlik: Politika, farklı Sayfa Nesneleri veya farklı test senaryoları için kullanılabilir.
  • Sorumlulukların ayrılması: Sayfa Nesneleri sadece sayfa öğeleriyle etkileşimden sorumludur, Politika Nesneleri ise kurallar ve doğrulamalardan.
  • Bakım kolaylığı: İş kuralını değiştirmek sadece Politika Nesnesini değiştirir, bu kuralın uygulandığı tüm Sayfa Nesnelerini değil.
  • Daha iyi ölçeklenebilirlik: Uygulama geliştikçe, daha fazla test ve sayfayı yönetmek daha kolay hale gelir.

PM'nin yapısı şu şekilde olabilir:

  • Sayfa Nesneleri: Bireysel sayfaları veya UI modüllerini temsil eder. Öğeleri bulucu ve onlarla etkileşim metodları içerir (örneğin, click_button(), enter_text()). Doğrulama mantığı içermez.
  • Politika Nesneleri: İş kurallarını veya politikalarını temsil eder. UI durumunu doğrulama veya iş mantığına dayalı işlemleri gerçekleştirme metodları içerir (örneğin, is_user_logged_in(), can_submit_form(), perform_checkout()). Bir veya birkaç Sayfa Nesnesi kullanabilir.
  • Testler: Politika Nesnelerini kullanarak, doğrulamalar ve iş mantığını içeren senaryoları çalıştırır.

Örnek (sözde kod):

# Sayfa Nesnesi
class LoginPage:
    def enter_username(self, username):
        # kullanıcı adı alanıyla etkileşim
        pass

    def enter_password(self, password):
        # şifre alanıyla etkileşim
        pass

    def click_login_button(self):
        # giriş düğmesiyle etkileşim
        pass

# Politika Nesnesi
class AuthPolicy:
    def __init__(self, driver):
        self.login_page = LoginPage(driver)
        self.dashboard_page = DashboardPage(driver) # DashboardPage olduğunu varsayıyoruz

    def login_as_user(self, username, password):
        self.login_page.enter_username(username)
        self.login_page.enter_password(password)
        self.login_page.click_login_button()
        # Burada veya ayrı metodlarda kontroller ekleyebilirsiniz
        # return self.is_user_logged_in()

    def is_user_logged_in(self):
        # Kontrol paneli öğelerinin görünür olup olmadığını denetle
        return self.dashboard_page.is_dashboard_displayed()

# Test
class LoginTest:
    def test_successful_login(self, driver):
        auth_policy = AuthPolicy(driver)
        auth_policy.login_as_user("test_user", "password123")
        assert auth_policy.is_user_logged_in(), "Kullanıcı giriş yapmış olmalı"