Che cos’è e come funziona Selenium per l’automazione dei test

Che cos’è e come funziona Selenium per l’automazione dei test

Selenium è il più diffuso tool per l’automazione di browser in commercio. Nonostante la sua principale funzione non sia quella di web testing automatico, esso viene utilizzato principalmente per questo. Quelli che da ora in poi chiameremo per semplicità “test”, in realtà, sono da intendere come sequenze di comandi che permettono l’automazione di un browser. Selenium permette quindi di specificare istruzioni per automatizzare le interazioni con il sito o l’applicazione web; non fornisce nativamente comandi come le asserzioni nè, tantomeno, strumenti di gestione dei test.

Si tratta di un prodotto open-source nato in seguito alla Google Test Automation Conference del 2009 dall’unione di due progetti (uno del 2004 e uno del 2007). Nel 2012 è stato riconosciuto come internet standard dal W3C e oggi è allo stadio di Candidate Recommendation.

Il suo principale componente è Selenium WebDriver, l’ambiente di sviluppo che permette di registrare, modificare e debuggare test per web application. E’ implementato come un driver per browser e non necessita di un server per eseguire i comandi. Ciò gli permette di interagire con i browser più diffusi come Firefox, Chrome, Internet Explorer e Microsoft Edge. I Test sono registrati in Selenese, uno speciale linguaggio di scripting ideato appositamente per Selenium.

Un altro elemento molto importante è il Selenium Grid, un server che permette ai test di utilizzare delle istanze di web browser su macchine remote. Con questo sistema un server agisce da hub e viene contattato dai test per accedere alle istanze dei browser. Selenium Grid permette, quindi, di lanciare test in parallelo su diverse macchine e di gestire differenti versioni e configurazioni di browser in maniera centralizzata (invece che per ogni singolo test).

Che cos'è e come funziona Selenium per l'automazione dei test

Vantaggi

Oltre ad essere un software open source con molti anni di esperienza alle spalle, e dunque supportato da una vasta documentazione, Selenium permette di lanciare test su diversi sistemi operativi e browser, anche in parallelo. Inoltre permette l’integrazione dei test su sistemi come Jenkins, TestNG e Maven agevolando i processi agili e di continuous integration.

Svantaggi

Proprio per il fatto che Selenium nasce con l’intento di automatizzare dei comandi su browser, manca di alcuni elementi fondamentali per uno strumento di creazione e gestione di test automatici. Infatti, come precedentemente accennato, Selenium non fornisce un sistema di gestione dei test che permetta di programmare i lanci o salvare i risultati ottenuti nè la possibilità di effettuare asserzioni. Per rimediare a questa mancanza è necessario accompagnare Selenium a dei framework. La necessità di installare questi componenti extra e quindi di doverli configurare, rende la fase di inizializzazione molto complessa e insidiosa.

Un’altra caratteristica negativa di Selenium è la necessità di tempi di attesa espliciti per testare le applicazioni AJAX. Questo è dovuto al fatto che l’esecuzione di un comando su un elemento (per esempio un click su un pulsante) avviene senza considerare se l’elemento in questione sia o meno presente all’interno della pagina. Ciò significa che il test fallirà sia se l’elemento non è presente nella pagina per un errore, sia se invece è semplicemente in fase di caricamento. Questo meccanismo può facilmente diventare un problema nel caso si stia lavorando su pagine web AJAX.

La soluzione consiste nell’utilizzo del “polling”. Se l’elemento selezionato non è disponibile si riprova ad accedervi ad intervalli di tempo regolari, finchè l’elemento non è pronto oppure non si raggiunge il timeout. Questa tecnica potrebbe comunque risultare una perdita di tempo nel caso in cui l’elemento selezionato non sia effettivamente presente nella pagina. Inoltre aumenta notevolmente la complessità nella scrittura dei test perchè deve essere gestita all’interno del suo stesso codice.

Per concludere, bisogna dire che Selenium è un prodotto maturo, nel bene e nel male; a fianco di molti suoi sostenitori si trovano altrettanti sviluppatori che non lo apprezzano affatto. Alcune scelte tecniche risultano ancora ostiche e di difficile gestione. Installazione e configurazione sono molto più complicate della maggior parte dei tool sul mercato e rendono questo prodotto poco appetibile.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *