Caratteristiche e differenza tra Cypress e Selenium nel testing software

Caratteristiche e differenza tra Cypress e Selenium nel testing software

Test end-to-end con Cypress

Con il testing end-to-end si intende quell’attività di testing dell’interfaccia grafica, cosi come la vedono gli utenti finali. In altre parole rappresenta una metodologia utilizzata per verificare se il flusso di un’applicazione si sta comportando come previsto dall’inizio alla fine, senza che vengano rilevati dei bugs che andrebbero ad inficiare sulla qualità dell’applicazione stessa.

L’end-to-end testing fa parte del System testing (test di sistema) e verifica i flussi e il funzionamento corretto del programma intero. Questa fase comprende il testing di interfacce e dipendenze esterne, come l’ambiente in cui il software viene eseguito o le componenti di back-end.

Lo scopo dell’esecuzione di test end-to-end consiste nell’identificare le dipendenze del sistema e garantire che vengano trasmesse le informazioni corrette tra i vari componenti.

Che cos’è Cypress

Cypress è un framework di testing end-to-end basato su Mocha, un altro framework JavaScript ricco di funzionalità in esecuzione nel browser.

Con Cypress è possibile inizializzare i test, scriverli, eseguirli e farne il debug. E’ composto da un Test Runner open source, che viene installato localmente, e da un Dashboard Service che permette di registrare i test.

L’installazione è semplice e veloce, e include anche un set di esempi che facilitano molto la comprensione del linguaggio. Non è necessario configurare servers, drivers o altre dipendenze. Le caratteristiche principali di Cypress sono:

  • Time Travel : durante l’esecuzione dei test, Cypress cattura degli snapshot e registra dei video, rendendo così il debug molto semplice da effettuare.
  • Automatic Waiting : i test vengono eseguiti solo dopo che gli elementi diventano visibili nel DOM, evitando inutili attese.
  • Network-free: Cypress gira direttamente nel browser, senza coinvolgere la rete, implementando i propri meccanismi di manipolazione del DOM.
  • Real-time reloads: dopo la modifica di un test, Cypress lo rilancia in automatico.

La maggior parte dei tool di testing (come Selenium, di cui parleremo a breve) esegue i test al di fuori del browser, lanciando comandi da remoto attraverso la rete. Cypress fa esattamente l’opposto, in quanto viene eseguito nello stesso ciclo di esecuzione dell’applicazione.

Dietro Cypress, lato server, gira un processo Node. Cypress e Node comunicano, sincronizzano ed eseguono costantemente attività per conto proprio. Avendo accesso ad entrambe le parti (front-end e back-end), è possibile rispondere agli eventi dell’applicazione in tempo reale, lavorando allo stesso tempo al di fuori del browser, per attività di più alto livello.

Cypress opera anche a livello di rete leggendo e alterando il traffico web al volo: ciò gli consente non solo di modificare tutto ciò che entra ed esce dal browser, ma anche di modificare il codice che potrebbe interferire con l’automazione del browser.

Cypress controlla l’intero processo di automazione dall’alto verso il basso, il che lo rende capace di comprendere tutto ciò che accade all’interno e all’esterno dal browser. Ciò significa che i risultati che è in grado di fornire sono più coerenti rispetto a qualsiasi altro tool di testing.

Inoltre, essendo installato localmente sul computer, ha accesso al sistema operativo per le attività di automazione. Ciò rende possibili attività come l’acquisizione di schermate, la registrazione di video, operazioni generali sul file system e operazioni di rete.

Differenza tra Cypress e Selenium

Selenium è uno dei più famosi framework in commercio, che si occupa di automatizzare il testing delle applicazioni web su diversi browser.

Non è un singolo strumento, ma una suite di diversi software, ognuno pensato per soddisfare le diverse esigenze di test di un’organizzazione.

Il Selenium Integrated Development Environment (IDE) è il framework più semplice della suite Selenium. È un plugin per Firefox che si installa tanto facilmente quanto un normale plugin. Proprio per questo viene utilizzato solo come strumento di prototipazione. Se si vogliono creare casi di test più avanzati, bisognerà ricorrere a Selenium RC o WebDriver.

Selenium Remote Control (RC) è stato per lungo tempo il framework di punta dell’intero progetto, in quanto è in grado di supportare diversi linguaggi di programmazione, come Java, C#, Ruby, Phyton e altri, consentendo all’utente di scegliere quello che preferisce.

Il WebDriver si dimostra migliore dei precedenti sotto molti aspetti, implementando un approccio più moderno e stabile nell’automazione delle azioni del browser. WebDriver infatti, a differenza dell’RC, non si basa su JavaScript per l’automazione, ma controlla il browser comunicando direttamente con esso. Questo gli permette di interagire con i più diffusi come Chrome, Firefox, Edge ed Explorer.

Caratteristiche e differenza tra Cypress e Selenium nel testing software

Infine c’è il Selenium Grid, uno strumento utilizzato insieme all’RC per eseguire test paralleli su macchine e browser diversi, portando così ad un risparmio in termini di tempo. Una caratteristica fondamentale è che agisce da hub, fungendo da fonte centrale dei comandi per ogni nodo ad esso collegato. In questo modo è in in grado di lanciare i test contemporaneamente e gestire le varie configurazioni in maniera centralizzata, piuttosto che per il singolo test.

Rispetto a Cypress, Selenium presenta degli svantaggi considerevoli:

  1. se si vogliono salvare i risultati dei test o fare asserzioni è necessario accompagnare Selenium ad altri framework, che quindi complicano e rallentano la fase di inizializzazione,
  2. i tempi di attesa sono lunghi, in quanto l’esecuzione di un comando su un elemento avviene senza considerare se l’elemento in questione sia o meno presente all’interno della pagina,
  3. utilizza un protocollo che manda json attraverso la rete (anche se i test sono eseguiti in locale), il che può comportare notevoli ritardi di esecuzione.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *