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
All checks were successful
Build LaTeX Document / build_latex (push) Successful in 3m3s
This commit is contained in:
52
Tesi.tex
52
Tesi.tex
@@ -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}
|
||||
|
||||
|
Reference in New Issue
Block a user