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:
53
Biblio.bib
53
Biblio.bib
@@ -1,4 +1,14 @@
|
|||||||
@book{10.5555/2544030,
|
@book{10.5555/1593511,
|
||||||
|
author = {Van Rossum, Guido and Drake, Fred L.},
|
||||||
|
title = {Python 3 Reference Manual},
|
||||||
|
year = {2009},
|
||||||
|
isbn = {1441412697},
|
||||||
|
publisher = {CreateSpace},
|
||||||
|
address = {Scotts Valley, CA},
|
||||||
|
abstract = {PYTHON 3 Reference Manual (Python Documentation MANUAL Part 2).Python is an easy to learn object-oriented programming language, which combines power with clear syntax. It has modules, classes, exceptions, very high level data types, and dynamic typing. Python is free software. It can be used with GNU (GNU/Linux), Unix, Microsoft Windows and many other systems.This is a printed softcover copy of the official Python documentation from the latest Python 3.0 distribution. For each copy sold $1 will be donated to the Python Software Foundation by the publisher.This book is part of a brand new six-part series of Python documentation books. Searching for "Python Documentation Manual" will show all six available books.ABOUT THE AUTHOR: Guido van Rossum, is the inventor of Python. Fred L. Drake, Jr. is the official editor of the Python documentation.}
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{10.5555/2544030,
|
||||||
author = {Chodorow, Kristina},
|
author = {Chodorow, Kristina},
|
||||||
title = {MongoDB: The Definitive Guide},
|
title = {MongoDB: The Definitive Guide},
|
||||||
year = {2013},
|
year = {2013},
|
||||||
@@ -15,7 +25,7 @@
|
|||||||
note = {[Accessed 28-09-2023]}
|
note = {[Accessed 28-09-2023]}
|
||||||
}
|
}
|
||||||
|
|
||||||
@misc{activitypubActivityPubRocks,
|
@misc{activitypubActivityPubRocks,
|
||||||
author = {},
|
author = {},
|
||||||
title = {{A}ctivity{P}ub {R}ocks! --- activitypub.rocks},
|
title = {{A}ctivity{P}ub {R}ocks! --- activitypub.rocks},
|
||||||
howpublished = {\url{https://activitypub.rocks/}},
|
howpublished = {\url{https://activitypub.rocks/}},
|
||||||
@@ -277,7 +287,7 @@
|
|||||||
note = {[Accessed 07-Mar-2023]}
|
note = {[Accessed 07-Mar-2023]}
|
||||||
}
|
}
|
||||||
|
|
||||||
@misc{Redazione_2020,
|
@misc{Redazione_2020,
|
||||||
title = {“Cittadinanza digitale e tecnocivismo. In un mondo digitale la cittadinanza inizia dai bit di Andrea Trentini", Giovanni Biscuolo e Andrea Rossi},
|
title = {“Cittadinanza digitale e tecnocivismo. In un mondo digitale la cittadinanza inizia dai bit di Andrea Trentini", Giovanni Biscuolo e Andrea Rossi},
|
||||||
url = {https://www.letture.org/cittadinanza-digitale-e-tecnocivismo-andrea-trentini-giovanni-biscuolo-andrea-rossi},
|
url = {https://www.letture.org/cittadinanza-digitale-e-tecnocivismo-andrea-trentini-giovanni-biscuolo-andrea-rossi},
|
||||||
abstractnote = {Prof. Andrea Trentini, Lei è autore con Giovanni Biscuolo e Andrea Rossi del libro Cittadinanza digitale e tecnocivismo. In un mondo digitale la cittadinanza inizia dai bit edito da Ledizioni: quali aspetti costituiscono la Cittadinanza Digitale? Risposta breve Ovunque ci sia tecnologia c’è influenza sulla cittadinanza… e vale anche il viceversa. Risposta articolata In una [...]Leggi di più... from “Cittadinanza digitale e tecnocivismo. In un mondo digitale la cittadinanza inizia dai bit” di Andrea Trentini, Giovanni Biscuolo e Andrea Rossi},
|
abstractnote = {Prof. Andrea Trentini, Lei è autore con Giovanni Biscuolo e Andrea Rossi del libro Cittadinanza digitale e tecnocivismo. In un mondo digitale la cittadinanza inizia dai bit edito da Ledizioni: quali aspetti costituiscono la Cittadinanza Digitale? Risposta breve Ovunque ci sia tecnologia c’è influenza sulla cittadinanza… e vale anche il viceversa. Risposta articolata In una [...]Leggi di più... from “Cittadinanza digitale e tecnocivismo. In un mondo digitale la cittadinanza inizia dai bit” di Andrea Trentini, Giovanni Biscuolo e Andrea Rossi},
|
||||||
@@ -287,7 +297,7 @@
|
|||||||
language = {it-IT}
|
language = {it-IT}
|
||||||
}
|
}
|
||||||
|
|
||||||
@phdthesis{ResearchBasedDataRightsManagementUsingBlockchainOverEthereumNetwork,
|
@phdthesis{ResearchBasedDataRightsManagementUsingBlockchainOverEthereumNetwork,
|
||||||
author = {Naz, Muqaddas and Javaid, Nadeem and Iqbal, Sohail},
|
author = {Naz, Muqaddas and Javaid, Nadeem and Iqbal, Sohail},
|
||||||
year = {2019},
|
year = {2019},
|
||||||
month = {09},
|
month = {09},
|
||||||
@@ -310,6 +320,22 @@
|
|||||||
abstract = {This memo documents the various methods known to be in use by applications to establish direct communication in the presence of Network Address Translators (NATs) at the current time. Although this memo is intended to be mainly descriptive, the Security Considerations section makes some purely advisory recommendations about how to deal with security vulnerabilities the applications could inadvertently create when using the methods described. This memo covers NAT traversal approaches used by both TCP- and UDP-based applications. This memo is not an endorsement of the methods described, but merely an attempt to capture them in a document. This memo provides information for the Internet community.}
|
abstract = {This memo documents the various methods known to be in use by applications to establish direct communication in the presence of Network Address Translators (NATs) at the current time. Although this memo is intended to be mainly descriptive, the Security Considerations section makes some purely advisory recommendations about how to deal with security vulnerabilities the applications could inadvertently create when using the methods described. This memo covers NAT traversal approaches used by both TCP- and UDP-based applications. This memo is not an endorsement of the methods described, but merely an attempt to capture them in a document. This memo provides information for the Internet community.}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@misc{scalerWhichBrowser,
|
||||||
|
author = {Simran Kumari},
|
||||||
|
title = {{W}hich {B}rowser {S}upports {S}elenium ? - {S}caler {T}opics --- scaler.com},
|
||||||
|
howpublished = {\url{https://www.scaler.com/topics/selenium-tutorial/which-browser-supports-selenium/}},
|
||||||
|
year = {},
|
||||||
|
note = {[Accessed 20-03-2025]}
|
||||||
|
}
|
||||||
|
|
||||||
|
@misc{seleniumSeleniumBrowser,
|
||||||
|
author = {},
|
||||||
|
title = {{T}he {S}elenium {B}rowser {A}utomation {P}roject --- selenium.dev},
|
||||||
|
howpublished = {\url{https://www.selenium.dev/documentation/}},
|
||||||
|
year = {},
|
||||||
|
note = {[Accessed 20-03-2025]}
|
||||||
|
}
|
||||||
|
|
||||||
@misc{tahoelafsAbouttahoerstTrunkdocs,
|
@misc{tahoelafsAbouttahoerstTrunkdocs,
|
||||||
author = {},
|
author = {},
|
||||||
title = {About-tahoe; {T}ahoe-{L}{A}{F}{S} --- tahoe-lafs.org},
|
title = {About-tahoe; {T}ahoe-{L}{A}{F}{S} --- tahoe-lafs.org},
|
||||||
@@ -326,6 +352,14 @@
|
|||||||
note = {[Accessed 18-03-2025]}
|
note = {[Accessed 18-03-2025]}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@misc{TestGrid_2024,
|
||||||
|
title = {Selenium WebDriver – Step-by-Step Tutorial},
|
||||||
|
url = {https://testgrid.io/blog/selenium-webdriver/},
|
||||||
|
journal = {TestGrid},
|
||||||
|
year = {2024},
|
||||||
|
month = {9}
|
||||||
|
}
|
||||||
|
|
||||||
@misc{theoryBitTorrentSpecificationTheoryOrg,
|
@misc{theoryBitTorrentSpecificationTheoryOrg,
|
||||||
author = {},
|
author = {},
|
||||||
title = {{B}it{T}orrent{S}pecification - {T}heory{O}rg --- wiki.theory.org},
|
title = {{B}it{T}orrent{S}pecification - {T}heory{O}rg --- wiki.theory.org},
|
||||||
@@ -425,14 +459,3 @@
|
|||||||
year = {},
|
year = {},
|
||||||
note = {[Accessed 18-03-2025]}
|
note = {[Accessed 18-03-2025]}
|
||||||
}
|
}
|
||||||
|
|
||||||
@book{10.5555/1593511,
|
|
||||||
author = {Van Rossum, Guido and Drake, Fred L.},
|
|
||||||
title = {Python 3 Reference Manual},
|
|
||||||
year = {2009},
|
|
||||||
isbn = {1441412697},
|
|
||||||
publisher = {CreateSpace},
|
|
||||||
address = {Scotts Valley, CA},
|
|
||||||
abstract = {PYTHON 3 Reference Manual (Python Documentation MANUAL Part 2).Python is an easy to learn object-oriented programming language, which combines power with clear syntax. It has modules, classes, exceptions, very high level data types, and dynamic typing. Python is free software. It can be used with GNU (GNU/Linux), Unix, Microsoft Windows and many other systems.This is a printed softcover copy of the official Python documentation from the latest Python 3.0 distribution. For each copy sold $1 will be donated to the Python Software Foundation by the publisher.This book is part of a brand new six-part series of Python documentation books. Searching for "Python Documentation Manual" will show all six available books.ABOUT THE AUTHOR: Guido van Rossum, is the inventor of Python. Fred L. Drake, Jr. is the official editor of the Python documentation.}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
52
Tesi.tex
52
Tesi.tex
@@ -774,7 +774,59 @@ L'indentazione è parte fontamentale in quanto, a differenza di altri linguaggi
|
|||||||
|
|
||||||
\subsection{Selenium}
|
\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}
|
\section{Architettura del sistema di test}
|
||||||
|
|
||||||
|
BIN
images/JSON-Wire-Protocol-over-HTTP-Client.png
Normal file
BIN
images/JSON-Wire-Protocol-over-HTTP-Client.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 358 KiB |
BIN
images/selenium-grid.jpg
Normal file
BIN
images/selenium-grid.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 132 KiB |
BIN
images/which-browser-supports-selenium-1.png
Normal file
BIN
images/which-browser-supports-selenium-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 937 KiB |
Reference in New Issue
Block a user