Il Page Object Model (POM) è un pattern architetturale per organizzare il codice dei test automatici, soprattutto nei test UI. Propone di creare classi o oggetti separati per rappresentare logicamente ciascuna pagina dell'applicazione, definendo metodi per interagire con gli elementi e le azioni su di essi.
Storia della questione: In passato, i test automatici venivano scritti “così come sono” - interagendo direttamente con i localizzatori degli elementi nei test stessi, portando a una duplicazione del codice e a una difficile manutenzione. Con l'introduzione del POM, è diventato possibile estrarre tutto ciò che è collegato a una specifica pagina in una classe separata, rendendo i test automatici più facili da mantenere.
Problema: Senza una strutturazione dei test, nei progetti di grandi dimensioni si accumula rapidamente un codice "disordinato". Qualsiasi modifica nell'interfaccia richiede l'aggiornamento di numerosi test, il che porta a costi elevati di manutenzione.
Soluzione: Il POM consente di gestire centralmente le azioni e gli elementi, riducendo la duplicazione, semplificando la scalabilità dell'infrastruttura dei test. Ad esempio, se è necessario modificare il localizzatore di un pulsante, la modifica viene effettuata solo in un luogo - nel Page Object, e non in tutti i test.
Caratteristiche chiave:
È possibile implementare test automatici senza il pattern POM?
Sì, ma tale approccio porterà a una duplicazione del codice, costi elevati di manutenzione e impossibilità di scalare.
È obbligatorio estrarre ogni elemento della pagina in un Page Object separato?
No, il Page Object è creato per pagine logiche che includono elementi e azioni correlate; talvolta, per piccoli blocchi ripetitivi, possono essere utilizzate entità ausiliarie separate (ad esempio, componenti).
Il POM risolve tutte le questioni architettoniche dei test automatici?
No, aiuta a strutturare la logica di lavoro con le interfacce, ma non definisce l'architettura completa di un framework di test - ad esempio, la gestione dei dati, la generazione di report e la gestione dello stato dell'applicazione.
I test automatici sono stati scritti senza POM - tutte le azioni erano scritte direttamente nei metodi di test. Di conseguenza, una semplice modifica dell'id di un pulsante su una pagina ha richiesto la modifica di 35 test, molti dei quali sono diventati non corretti, altri semplicemente hanno smesso di funzionare.
Pro:
Contro:
In un nuovo progetto, i test sono stati costruiti secondo POM: sono state aggiunte classi di pagina, incapsulato il lavoro con gli elementi, utilizzato l'ereditarietà per pattern comuni.
Pro:
Contro: