feat: enhance Selenium section with detailed explanations, images, and new references; update bibliography
All checks were successful
Build LaTeX Document / build_latex (push) Successful in 3m3s

This commit is contained in:
2025-03-20 16:24:12 +01:00
parent f63962516f
commit 403d2eb03d
5 changed files with 91 additions and 16 deletions

View File

@@ -774,7 +774,59 @@ L'indentazione è parte fontamentale in quanto, a differenza di altri linguaggi
\subsection{Selenium}
Selenium è un framework open-source ampiamente utilizzato per l'automazione dei browser web. Fornisce un insieme di strumenti e librerie che consentono a tester e sviluppatori di interagire con gli elementi di una pagina, simulare azioni dell'utente ed eseguire test automatizzati su applicazioni web.
Uno degli aspetti chiave di Selenium è la sua capacità di funzionare con diversi browser, garantendo la compatibilità cross-browser e permettendo l'esecuzione di test in ambienti differenti.
Supporta diversi browser popolari, tra cui Google Chrome, Mozilla Firefox, Microsoft Edge, Safari e Opera. Ogni browser è gestito tramite implementazioni specifiche di `WebDriver', che fungono da ponte tra Selenium e il browser.
\begin{figure}[H]
\centering
\includegraphics[width=350pt]{images/which-browser-supports-selenium-1.png}
\caption{Browser supportati da Selenium.}
\end{figure}
Utilizzando i WebDriver, sviluppatori e tester possono scrivere script di automazione nel loro linguaggio di programmazione preferito ed eseguirli su diversi browser. Selenium WebDriver offre un'API unificata che astrae le differenze tra i vari browser, consentendo un'automazione fluida e risultati di test coerenti.
Una volta costruiti i casi di test, i dati devono essere comunicati al driver del browser in qualche modo. In Selenium, questo avviene utilizzando il `JSON Wire Protocol' con HTTP come gestore della comunicazione.
Poiché la comunicazione avviene in un'infrastruttura client-server, nel mondo di Selenium WebDriver questo sistema è noto come `request-response' o `command-response'.
\begin{figure}[H]
\centering
\includegraphics[width=300pt]{images/JSON-Wire-Protocol-over-HTTP-Client.png}
\caption{JSON Wire Protocol.}
\end{figure}
Il funzionamento dei WebDriver può essere riassunto come:
\begin{itemize}
\item Un tester scrive uno script di test automatizzato destinato a un driver di browser specifico.
\item Quando viene premuto il pulsante “Esegui”, lo script viene convertito in formato API con dati in JSON.
\item I dati vengono trasferiti al driver del browser utilizzando il JSON Wire Protocol su una rete HTTP come API RESTful.
\item Il driver del browser riceve i dati e, se la validazione ha successo, comunica le azioni al browser tramite HTTP.
\item Se la validazione fallisce, gli errori vengono restituiti al client.
\item Una volta avviato il browser, il driver esegue le azioni una per una, simulando il comportamento di un tester manuale attraverso l'automazione.
\item I comandi vengono inviati tramite HTTP, e le risposte vengono ricevute dallo stesso protocollo nel driver.
\item Dopo l'esecuzione di tutte le azioni, il browser si chiude e il driver comunica i risultati al client.
\end{itemize}
Affinché il driver possa comunicare correttamente con il browser, è fondamentale che il browser stessso sia installato sul sistema, e che il sistema e il suo ambiente sia configurato correttamente, con tutti i prerequisiti necessari per l'esecuzione dei test.
Un altro componente messo a dispoizione da Selenium è, `Selenium Grid', che permette di eseguire test su più macchine e browser remoti contemporaneamente, riducendo i tempi di esecuzione e migliorando l'efficienza dei test, instradando i comandi inviati dal client alle istanze remote dei browser ed è composto da 2 componenti principali:
\begin{itemize}
\item \textbf{Hub}: Il server principale che funge da punto di ingresso per i test. Riceve i comandi dai client e li instrada alle istanze dei browser remote.
\item \textbf{Node}: Le macchine remote che eseguono i test. Si connettono al `Hub' e ricevono i comandi per eseguire i test sui browser installati.
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[width=300pt]{images/selenium-grid.jpg}
\caption{Architettura Selenium Grid.}
\end{figure}
Per fare tutto questo, Selenium mette a disposizione varie immagini Docker preconfigurate con tutto il necessario per eseguire i test, come il browser, il driver, l'hub, e le dipendenze necessarie, con anche diverse versioni legacy per testare la compatibilità con versioni obsolete.\cite{TestGrid_2024} \cite{scalerWhichBrowser} \cite{seleniumSeleniumBrowser}
\section{Architettura del sistema di test}