Senior
Τι είναι το Μοντέλο Πολιτικής (PM);
sobes.tech AI
Απάντηση από AI
Το Μοντέλο Πολιτικής (PM) στο πλαίσιο των αυτοματοποιημένων δοκιμών είναι μια επέκταση του Μοντέλου Αντικειμένου Σελίδας (POM). Η κύρια ιδέα είναι να διαχωριστούν οι πολιτικές ή οι επιχειρηματικοί κανόνες για την αλληλεπίδραση με τα στοιχεία της σελίδας (και τη συμπεριφορά που σχετίζεται με αυτές τις πολιτικές) από τα ίδια τα αντικείμενα της σελίδας.
Αντί να ενσωματώνουν ελέγχους και πολύπλοκη λογική απευθείας στα Αντικείμενα Σελίδας, αυτοί οι κανόνες μεταφέρονται σε ξεχωριστές κλάσεις ή modules — Αντικείμενα Πολιτικής.
Πλεονεκτήματα αυτής της προσέγγισης:
- Καλύτερη αναγνωσιμότητα: Τα σενάρια δοκιμών γίνονται πιο απλά και πιο εύκολα στην κατανόηση, καθώς εστιάζουν στην περιγραφόμενη ενέργεια, και όχι στην επικύρωσή της.
- Επαναχρησιμοποίηση: Οι πολιτικές μπορούν να χρησιμοποιηθούν για διαφορετικά Αντικείμενα Σελίδας ή σε διαφορετικά σενάρια δοκιμών.
- Διαχωρισμός ευθυνών: Τα Αντικείμενα Σελίδας είναι υπεύθυνα μόνο για την αλληλεπίδραση με τα στοιχεία της σελίδας, ενώ τα Αντικείμενα Πολιτικής διαχειρίζονται τους κανόνες και τις επικυρώσεις.
- Ευκολία συντήρησης: Η αλλαγή μιας επιχειρηματικής πολιτικής απαιτεί μόνο την τροποποίηση του Αντικειμένου Πολιτικής, και όχι όλων των Αντικειμένων Σελίδας όπου εφαρμόζεται αυτός ο κανόνας.
- Καλύτερη κλιμάκωση: Είναι πιο εύκολο να διαχειριστείτε μεγαλύτερο αριθμό δοκιμών και σελίδων καθώς η εφαρμογή αναπτύσσεται.
Η δομή του PM μπορεί να είναι ως εξής:
- Αντικείμενα Σελίδας: Αντιπροσωπεύουν μεμονωμένες σελίδες ή UI modules. Περιέχουν τοποθετητές στοιχείων και μεθόδους για αλληλεπίδραση με αυτά (π.χ.,
click_button(),enter_text()). Δεν περιέχουν λογική επικύρωσης. - Αντικείμενα Πολιτικής: Αντιπροσωπεύουν επιχειρηματικούς κανόνες ή πολιτικές. Περιέχουν μεθόδους για τον έλεγχο της κατάστασης του UI ή την εκτέλεση ενεργειών βασισμένων στη λογική της επιχείρησης (π.χ.,
is_user_logged_in(),can_submit_form(),perform_checkout()). Μπορούν να χρησιμοποιούν ένα ή περισσότερα Αντικείμενα Σελίδας. - Δοκιμές: Χρησιμοποιούν Αντικείμενα Πολιτικής για την εκτέλεση σεναρίων που περιλαμβάνουν ελέγχους και επιχειρηματική λογική.
Παράδειγμα (ψευδοκώδικας):
# Αντικείμενο Σελίδας
class LoginPage:
def enter_username(self, username):
# αλληλεπίδραση με το πεδίο ονόματος χρήστη
pass
def enter_password(self, password):
# αλληλεπίδραση με το πεδίο κωδικού
pass
def click_login_button(self):
# αλληλεπίδραση με το κουμπί σύνδεσης
pass
# Αντικείμενο Πολιτικής
class AuthPolicy:
def __init__(self, driver):
self.login_page = LoginPage(driver)
self.dashboard_page = DashboardPage(driver) # Υποθέτοντας ότι υπάρχει DashboardPage
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()
# Πιθανώς να προσθέσετε ελέγχους εδώ ή σε ξεχωριστές μεθόδους
# return self.is_user_logged_in()
def is_user_logged_in(self):
# Έλεγχος αν εμφανίζονται στοιχεία του πίνακα ελέγχου
return self.dashboard_page.is_dashboard_displayed()
# Δοκιμή
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(), "Ο χρήστης θα πρέπει να είναι συνδεδεμένος"