Strumenti e Team per il Testing | ELbuild
karma testing

Testing

“I test sono storie che raccontiamo alla prossima generazione di programmatori su un progetto.” ― Roy Osherove,

L'importanza del testing

Un'attività da non sottovalutare

Quando si progetta e si implementa un nuovo sistema, è necessario testare che tutto funzioni correttamente e evidenziare precocemente eventuali malfunzionamenti o bug più o meno critici.

Il processo di testing si articola in diverse attività, alcune delle quali si svolgono durante la stesura del codice (unit testing) e altre che si collocano in prossimità dei rilasci (e2e testing, QA).

Strumenti per il testing su backend

Junit

Per i nostri test in ambito server utilizziamo jUnit e Mockito. Si tratta di strumenti open source che sono lo standard de facto del testing in ambito Java. Soprattutto in ambito server, o nello sviluppo di sistemi gestionali, è frequente la presenza di sistemi di terza parte che rendono difficoltosa la scrittura di unit test corretti. Mockito ci viene in soccorso consentendo la simulazione di oggetti o response e semplificando notevolmente lo sviluppo di test per classi con dipendenze esterne.

Strumenti per lo unit testing su frontend

Jasmine, Karma, Jest

Il framework Angular prevede già nel suo core gli strumenti necessari per effettuare i test automatici sul codice scritto. In particolare utilizza il testing framework Jasmine per la scrittura dei test e Karma per eseguire i test e raccogliere i risultati. E' possibile anche utilizzare altri test framework.

Anche Vue prevede l'integrazione con un framework di test, in questo caso si utilizza Jest.

Configurando il server che gestisce il repository per fare Continuous Integration è inoltre possibile eseguire i test in automatico per ogni commit o pull request di codice.

Strumenti per end to end testing

Cypress

Cypress è un potente strumento open source per fare end to end testing di applicazioni web; permette di scrivere una serie di casi di test e effettuarli poi in automatico all'interno del browser. Questo sistema è indipendente dalla tecnologia con cui è stato scritta l'interfaccia utente e si adatta quindi ai diversi progetti web che sviluppiamo, indipendemente dalle scelte tecniche fatte.

Team di testing e controllo qualità

Test manuale

Il testing automatico è necessario per poter garantire la qualità del codice e dei prodotti che produciamo, ed è particolarmente utile per prevenire regressioni in seguito ad operazioni di manutenzione o a identificare potenziali bug in piattaforme di grosse dimensioni. Tuttavia è necessario anche l'apporto umano al testing dei sistemi che progettiamo, essenziale soprattutto in quei casi d'uso dove entrano in gioco diversi processi esterni o particolarmente complessi e quindi più difficili da riprodurre in automatico. Per questo dedichiamo un team, dimensionato in base alle esigenze del progetto, per garantire la qualità dei prodotti e dei servizi che forniamo.

In alcuni scenari, si seleziona inoltre un gruppo ristretto di utenti (beta tester) che utilizzeranno il sistema prima del lancio vero e proprio, non solo per evidenziare possibili falle o malfunzionamenti, ma anche per valutare la user experience e poter raccogliere feedback per migliorare l'interfaccia e il funzionamento.