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 sottovalutareQuando 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
JunitPer 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, JestIl 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
CypressCypress è 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 manualeIl 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.