Salta al contenuto

Griglia del selenio: cos'è e come configurarla

L'automazione dei test è un'attività cruciale per fornire rapidamente software di alta qualità. Ma man mano che le tue suite di test crescono, i tempi di esecuzione si allungano. I test su più browser diventano complessi. Iterare e ridimensionare l’automazione diventa difficile.

È qui che entra in gioco Selenium Grid: un punto di svolta per l'esecuzione di test distribuiti.

In questa guida completa imparerai come Selenium Grid può potenziare l'automazione dei test con test paralleli.

Tratteremo:

  • Cos'è Selenium Grid e come funziona
  • Vantaggi dell'utilizzo di Selenium Grid
  • Casi e scenari d'uso comuni
  • Come configurarlo con esempi
  • Migliori pratiche per l'ottimizzazione

Iniziamo!

Cos'è la griglia del selenio?

Selenium Grid è un ambiente di esecuzione di test distribuito abilitato da Selenium Remote Control (RC).

Ti consente di eseguire test automatizzati del Selenium in parallelo su più macchine, browser e sistemi operativi, il tutto da un hub centrale.

Ecco le funzionalità chiave fornite da Selenium Grid:

  • Esecuzione parallela dei test: esegui test su più nodi contemporaneamente
  • Test su più browser: esegui test su diversi browser e versioni di browser
  • Test multi-OS: test su Windows, Linux, macOS ecc.
  • Scalabilità su richiesta: aumenta la capacità di esecuzione dei test aggiungendo nodi
  • Bilanciamento del carico: l'hub distribuisce i test in modo efficiente tra i nodi

Queste funzionalità rendono Selenium Grid prezioso per l'automazione su larga scala e i test di integrazione.

Componenti chiave

La griglia di selenio ha 3 componenti principali:

Hub della griglia del selenio – L'hub è il controller centrale che riceve le richieste di test e le distribuisce ai nodi per l'esecuzione.

Nodi della griglia di selenio – I nodi sono gli ambienti di esecuzione dei test in cui avviene il test vero e proprio. È possibile avere più nodi collegati a un hub.

Test/script di test – Gli script di test automatizzati che utilizzano l'API Selenium WebDriver che contengono il codice per eseguire casi e scenari di test specifici.

Come funziona la griglia del selenio

Ecco come Selenium Grid consente l'esecuzione di test distribuiti:

  1. Gli script di test sono configurati per richiedere sessioni di test da Grid Hub per eseguire un test case.
  2. In base ai requisiti del browser e della piattaforma per il test case, l'hub lo assegna a un nodo che soddisfa tali funzionalità.
  3. Il Nodo avvia il browser ed esegue lo script di test.
  4. Lo stato di esecuzione del test e i risultati vengono inviati all'Hub dal Nodo.
  5. L'Hub comunica i risultati allo script di test.

Gestendo la distribuzione dei test e l'instradamento dei risultati in questo modo, Selenium Grid consente l'esecuzione parallela dei test estremamente scalabile.

Perché utilizzare la griglia di selenio?

Diamo un'occhiata ad alcuni dei principali vantaggi dell'utilizzo di Selenium Grid:

Esecuzione dei test più rapida

Questo è il principale motivatore che spinge la maggior parte dei team a utilizzare Selenium Grid.

L'esecuzione dei test in sequenza può richiedere molto tempo man mano che le suite di test crescono.

L'esecuzione di 1000 casi di test in sequenza con 10 minuti per test richiederebbe 167 ore o quasi 7 giorni!

Ma utilizzando Selenium Grid, puoi facilmente parallelizzare le esecuzioni di test su più nodi, riducendo drasticamente i tempi di esecuzione.

Ad esempio, distribuendo questi 1000 test su 10 nodi si riduce il tempo di esecuzione complessivo a sole 17 ore, ovvero 4 volte più veloce.

Secondo un sondaggio di Testim, le squadre hanno riferito Esecuzione del test più veloce dal 70% al 90%. dopo aver implementato Selenium Grid.

Copertura del test migliorata

Testare la tua applicazione su diversi browser, versioni e sistemi operativi è fondamentale per la qualità.

Ma impostare manualmente tutti questi ambienti di test richiede uno sforzo enorme.

Selenium Grid risolve questo problema consentendoti di eseguire ciascun caso di test in un mix di ambienti che forniscono:

  • Test su browser incrociati
  • Test multipiattaforma
  • Test su più versioni
  • Test su diverse risoluzioni dello schermo

Ciò garantisce che i test coprano il massimo delle permutazioni e trovino i problemi in anticipo.

Conveniente

Selenium Grid riduce al minimo i costi dell'infrastruttura consentendoti di sfruttare le macchine che già possiedi come nodi.

Non sono necessarie macchine fisiche o virtuali aggiuntive.

Riduce inoltre i costi di manutenzione dei test attraverso la distribuzione dei test e la gestione centralizzata tramite l'hub.

Test affidabile

La distribuzione dei test tra i nodi aiuta a mantenere la stabilità anche se i test su un particolare nodo falliscono.

L'hub esegue automaticamente i test falliti su un altro nodo disponibile, fornendo risultati affidabili.

Scalabile

Se hai bisogno di aumentare la capacità di esecuzione dei test, puoi collegare dinamicamente nuovi nodi all'hub Selenium Grid.

Questo provisioning su richiesta degli ambienti di test rende Selenium Grid molto scalabile.

Ad esempio, Mozilla potrebbe ampliare Selenium Grid da 400 a 2500 nodi per gestire le crescenti esigenze di test.

Casi d'uso per la griglia di selenio

Ecco alcuni scenari comuni di automazione dei test in cui Selenium Grid può potenziare i tuoi sforzi:

Grandi suite di test

Per le suite di test con migliaia o decine di migliaia di casi di test, l'esecuzione parallela può ridurre i tempi di esecuzione totali da giorni a poche ore.

Numero di testTempo di esecuzione sequenzialeTempo di esecuzione parallela
10001 settimana17 ore (10 nodi)
50005 settimane3.5 giorni (10 nodi)
1000010 settimane1 settimana (20 nodi)

Test d'integrazione

Nelle pipeline CI/CD, la velocità di esecuzione dei test è fondamentale per un feedback rapido.

Selenium Grid accelera i test di integrazione distribuendo test dell'interfaccia utente automatizzati su più nodi da eseguire contemporaneamente.

Testim ha visto un cliente di servizi finanziari ridurre i tempi di esecuzione dei test CI da 120 minuti a soli 10 minuti utilizzando Selenium Grid.

Test tra browser

Il test su più browser è vitale ma richiede molte risorse. Selenium Grid semplifica i test tra browser gestendo automaticamente la distribuzione dei test.

Puoi vedere come si comporta la tua applicazione su tutti i principali browser in un'unica esecuzione di test.

Squadre geograficamente distribuite

Quando i team di sviluppo sono distribuiti a livello globale, puoi effettuare il provisioning dei nodi Selenium Grid più vicini alle loro sedi.

Ciò fornisce un feedback del test più rapido e rileva i problemi specifici della posizione.

Ampliare l'infrastruttura di test

Per team e applicazioni in crescita, aumentare manualmente la capacità di automazione è noioso.

Con Selenium Grid puoi aumentare in modo semplice la capacità di test collegando nuovi nodi in modo dinamico in base alla domanda.

Architettura della griglia di selenio

Ora che abbiamo visto gli immensi vantaggi, diamo uno sguardo dietro il cofano dell'architettura di Selenium Grid:

The Hub

L'hub Selenium Grid è il punto di controllo centrale che gestisce:

  • Distribuzione test: riceve richieste di test e le assegna ai nodi
  • Gestione dei nodi: tiene traccia delle registrazioni e degli stati dei nodi
  • Gestione delle sessioni: gestisce le sessioni di test attive tra i nodi
  • Bilanciamento del carico: distribuisce i test in modo uniforme tra i nodi disponibili

Fornisce un singolo endpoint a cui gli script di test possono connettersi.

Nodes

Un nodo è un ambiente di esecuzione del test configurato per eseguire test automatizzati.

I nodi gestiscono:

  • Esecuzione del test: esecuzione degli script di test assegnati
  • Gestione del browser: avvio del browser configurato per la sessione
  • Reporting: invio dello stato e dei risultati del test all'hub
  • Pulizia: ripristino dello stato tra le esecuzioni dei test

È possibile configurare ciascun nodo con diversi:

  • Tipi e versioni di browser: Chrome, Firefox, Safari ecc.
  • Sistemi operativi: Windows, Linux, macOS ecc.
  • Risoluzioni dello schermo: 720p, 1080p ecc.

Ciò consente di creare un insieme estremamente diversificato di ambienti di test.

Script di prova

Gli script di test contengono le istruzioni passo passo per eseguire casi di test specifici, scritti utilizzando l'API Selenium WebDriver.

Interagiscono con l'hub per:

  • Richiedi sessioni di test per la configurazione del browser/sistema operativo desiderata
  • Eseguire i passaggi del test sul nodo per una sessione assegnata
  • Riportare i risultati dei test all'hub

Puoi scrivere script di test in linguaggi come Java, Python, C#, Ruby ecc.

Impostazione della griglia del selenio

Esaminiamo i passaggi chiave coinvolti nella configurazione di Selenium Grid:

Pre-requisiti

  • Java JDK 8+ installato sulle macchine
  • File JAR del server autonomo Selenium scaricato
  • WebDriver per ciascun browser configurato

Hub di lancio

Esegui questo comando per avviare l'hub Selenium Grid:


java -jar selenium-server-.jar hub 

Per impostazione predefinita, l'hub verrà avviato sulla porta 4444.

Registra i nodi

Su ogni macchina che desideri come nodo, esegui:

  
java -jar selenium-server-.jar node

Ciò registrerà la macchina con le configurazioni predefinite.

È possibile specificare le funzionalità del browser per il nodo come:


java -jar selenium-server-.jar node --browser browserName=chrome,version=109

Esegui questo comando su tutte le macchine che desideri configurare come nodi Selenium.

Configurare gli script di test

Aggiorna gli script di test per connettersi all'hub fornendo il relativo URL:


WebDriver driver = new RemoteWebDriver(new URL("http://<hub_ip>:4444/"), options); 

L'hub distribuirà automaticamente i test ai nodi.

Scalare

È possibile collegare più nodi ripetendo il passaggio 2. L'hub bilancerà il carico su tutti i nodi disponibili.

Esecuzione di test sulla griglia di selenio

Vediamo come possiamo eseguire i test Selenium sulla griglia con un esempio Python:

from selenium import webdriver

grid_hub = "http://1.2.3.4:4444/wd/hub"

# Browser options
chrome_options = webdriver.ChromeOptions() 
firefox_options = webdriver.FirefoxOptions()

# Test for Chrome
driver = webdriver.Remote(command_executor=grid_hub, options=chrome_options)
driver.get("http://www.google.com")
print("Chrome title is: " + driver.title)
driver.quit() 

# Test for Firefox
driver = webdriver.Remote(command_executor=grid_hub, options=firefox_options) 
driver.get("http://www.google.com")
print("Firefox title is: " + driver.title)
driver.quit()

Questo script dimostra l'esecuzione dello stesso test in parallelo su Chrome e Firefox utilizzando Selenium Grid.

kkdkdalkdlada

  • Lo script di test si connette all'hub utilizzando RemoteWebDriver
  • Le opzioni specifiche del browser sono configurate separatamente
  • L'hub distribuisce automaticamente i test ai nodi idonei
  • Per aumentare la scalabilità è sufficiente collegare più nodi

Gestendo la distribuzione dei test, Selenium Grid ti consente di concentrarti sulla scrittura di ottimi script di test piuttosto che sulla gestione dell'infrastruttura.

Best Practices

Ecco alcuni suggerimenti per ottimizzare la configurazione della griglia del selenio:

Automatizza la gestione dei nodi

Utilizza strumenti come Docker e Kubernetes per automatizzare l'avvio dei nodi in base alla domanda. Ciò migliora la scalabilità.

Containerizza i nodi

Le piattaforme container come Docker aiutano a creare ambienti di nodi identici e leggeri in modo coerente.

Utilizzare un programmatore di test

Pianifica le esecuzioni dei test per periodi non di punta per distribuire il carico e massimizzare l'utilizzo delle risorse.

Implementare i tentativi

Configura i test falliti per riprovare automaticamente su un altro nodo per affidabilità.

Eseguire il test di carico

Testa il carico della tua distribuzione Selenium Grid per valutare la capacità massima ed evitare colli di bottiglia.

Monitorare l'utilizzo

Tieni traccia dell'utilizzo dei nodi nel tempo per pianificare l'espansione dei nodi e ottimizzare la registrazione dell'hub.

Punti chiave

Per concludere, ecco le cose fondamentali da sapere su Selenium Grid:

  • Consente una rapida esecuzione parallela dei test distribuendo i test su più nodi.

  • L'hub gestisce l'allocazione dei test mentre i nodi eseguono l'effettiva esecuzione dei test.

  • Selenium Grid rende l'automazione dei test su larga scala estremamente veloce ed efficiente.

  • Semplifica i test tra browser e i test di integrazione con esecuzioni parallele.

  • La sua configurazione richiede uno sforzo minimo: basta avviare un hub e collegare i nodi.

  • Puoi aumentare facilmente la capacità di test aggiungendo più nodi su richiesta.

  • Gli strumenti di containerizzazione e orchestrazione possono migliorare la gestione e l'utilizzo.

Quindi, se hai a che fare con un'automazione dei test lenta e complessa o con colli di bottiglia CI, Selenium Grid è la soluzione. La sua architettura distribuita rivoluziona l'esecuzione dei test su larga scala.

Provatelo e fatemi sapere se avete altre domande!

Partecipa alla conversazione

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *