Selenium framework: Selenium è un framework open-source per l'automazione e il testing di applicazioni web che permette di controllare in remoto le istanze del browser ed emulare l'interazione di un utente.
2. Introduzione
• Selenium è un framework open-source per l'automazione e il testing
di applicazioni web, permette di controllare in remoto le istanze del
browser ed emulare l'interazione di un utente
• Utilizzando questo framework è possibile automatizzare i test web
che altrimenti dovrebbero essere eseguiti da un utente umano
• Selenium fornisce supporto a diversi linguaggi di programmazione:
Java, Python, C#, Ruby, Javascript, Kotlin
• Selenium è attualmente utilizzato nella produzione in aziende come
Netflix, Google, HubSpot, Fitbit e altre
4. Selenium IDE
• Uno strumento utilizzabile per sviluppare i casi di test Selenium.
• È un'estensione di Chrome e Firefox di facile utilizzo
• Registra le azioni degli utenti nel browser, utilizzando i comandi
Selenium esistenti, con parametri definiti dal contesto di
quell'elemento
• Risparmio di tempo se si vuole implementare test senza
utilizzare linguaggi di programmazione
• Uso di sintassi specifica per definire script Selenium
5. Selenium GRID
• Selenium Grid consente l'esecuzione di script WebDriver su
macchine remote (virtuali o reali) instradando i comandi inviati
dal client alle istanze del browser remoto
• Metodo semplice per eseguire test in parallelo su più macchine
• Gestione centralizzata delle diverse versioni di browser e
configurazioni di browser (invece che in ogni singolo test)
• Non gestisce l'infrastruttura di un progetto quindi potrebbe non
soddisfare esigenze specifiche
6. Selenium WebDriver
• Fornisce un protocollo cablato indipendente dalla piattaforma e
dalla lingua per consentire ai programmi fuori processo di istruire
il comportamento dei browser web
• Fornisce funzioni per manipolare gli elementi DOM nei
documenti web e per controllare il comportamento di un
programma utente
• Il WebDriver guida un browser come farebbe un utente,
localmente sulla macchina dove viene installato o in remoto
• Controlla il browser a livello del sistema operativo piuttosto che
utilizzare comandi JavaScript
7. Selenium WebDriver
• Ogni browser è supportato da una specifica implementazione
WebDriver (ChromeDriver, Mozzilla GeckoDriver, Opera, Edge
driver, HtmlUnitDriver ecc..)
• WebDriver trasmette i comandi al browser tramite il driver e
riceve le informazioni tramite lo stesso percorso.
• È inteso principalmente per consentire agli autori di applicazioni
web di scrivere test che automatizzino i processi utente senza
dover accedere manualmente all'applicazione web
8. Cosa serve?
• Selenium 3 (WebDriver): Nuget .NET, C#
• Driver per browser: da installare sulla macchina a seconda del
browser utilizzato (tabella sopra)
11. Migliorare i test e
l'automazione
• Report dei risultati
– Di base Selenium non si occupa di report ma è possibile
utilizzare framework di testing per generarli (Es. xUnit result su
AzureDevOps)
• Page Object design pattern
– Classe che funge da interfaccia per una pagina del tuo SUT
(subject under test)
– L'oggetto conterrà la rappresentazione della pagina e i servizi
che la pagina fornisce tramite metodi
– L'oggetto non deve contenere nessun codice relativo a ciò che
viene testato
12. Migliorare i test e
l'automazione
• Assicurarsi che i test siano isolati l'uno dall'altro
– Es. instanziare un WebDriver per test
• Mock dei servizi esterni, se utilizzati per interfacciarsi con altre
componenti dell'applicazione (es. API o Database)
• Utilizzare WebDriverWait invece di altri metodi per restare in attesa
su thread. Il metodo wait.Until fornisce molteplici eventi su cui
effettuare il controllo di attesa ed è gestito dal framework
• In generale utilizzare le best-pratice tipiche dello sviluppo orientato
ai test
14. Criticità del framework
• CAPTCHAs non testabili, disabilitarli durante i test o aggiungere un
hook per consentire ai test di bypassarlo
• Autenticazione a 2 fattori
• Download dei file
– l'API non mostra l'avanzamento del download
• Ordine di esecuzione dei test
– i test dovrebbero essere in grado di essere eseguiti in qualsiasi
ordine
• Non è un framework ottimizzato per gli stress test di performace di
un applicazione web
15. Vantaggi e svantaggi
• PRO:
– Selenium gratuito e open-source
– Integrabile con DevOps o CI/CD
– Mobile testing (plugin: Appium, Selendroid, Robotium, ios-driver)
– Supporto a diversi lignuaggi, piattaforme e browsers
• CONTRO:
– Costoso implementare testing web
– Cambio frequente dell UI significa riscrivere i test
– Nessun report dei risultati di test (Anche se esitono soluzioni di
terze parti)
– No confronto tra immagini built-in (si con plugin esterni)