Condividi
x
Condividi
x

La definizione dei mille: il mondo dei test

15/11/2023

Metà ottobre, giornata autunnale. Fuori piove e tu ringrazi di lavorare da remoto. Musica nelle cuffie per concentrarsi. Le dita che battono sulla tastiera.

All’improvviso la notifica di una mail distoglie l’attenzione dal codice che, stranamente, aveva qualcosa che non andava: è un’altra pull request inclusa nel branch principale.

Questa ha qualcosa di particolare però. La pipeline di rilascio ha eseguito con successo 1000 test. Messaggio al team. Vassoio di brioches per festeggiare l’evento 🥳.

La mattina in cui in Aton ci siamo accorti di aver scritto mille test nella code base del backend è andata più o meno così. E’ stato un piccolo ma significativo traguardo, reso possibile da un percorso ed un cambiamento di mindset che cercherò di raccontarvi in questo articolo.

Iniziamo!

Che cosa vuol dire scrivere un test?

Test Aton - Immagine di blossomstar su Freepik

I test ed il TDD (Test Driven Development) sono argomenti particolarmente diffusi all’interno della comunità tech e la letteratura a riguardo è decisamente cospicua. Semplificando all’osso la questione, scrivere test significa scrivere del codice che verifica e cristallizza il comportamento di altro codice.
Verificare il comportamento significa controllare che dato un certo input venga prodotto sempre lo stesso output. Sia nei casi più semplici e lineari che in quelli più articolati e subdoli. Inoltre, permette anche di constatare se il comportamento di quanto scritto aderisce alle specifiche definite in fase di analisi.
Cristallizzare, invece, assume un’importanza maggiore in termini di manutenibilità di una code base. Essa infatti evolve nel tempo e viene utilizzata da più persone contemporaneamente – che possono modificare logiche comuni o pregresse. Avere dei test a testimonianza di quanto fatto nel passato garantisce allo sviluppatore la sicurezza che ciò che ha implementato non rompa la compatibilità con quanto già esistente.

Tutto questo non è privo di fatica! Scrivere test significa anche dilatare il tempo di sviluppo per poter includere le attività legate al setup dei test stessi (es. dati di mockup, popolamento database, parametri di configurazione, etc.), alla loro scrittura vera e propria e al fix del comportamento della logica di business quando, inevitabilmente, qualche test fallisce.

Allo stesso tempo, questa dilatazione dello sviluppo viene ammortizzata quando il codice non fallisce drammaticamente in produzione e risparmia qualche notte insonne di debug allo sviluppatore.

Ok, bella la teoria. Ma in Aton come si scrivono i test?

Il testing nel processo di sviluppo

Da quando in Aton abbiamo iniziato a sviluppare le nuove linee di prodotto basate su stack tecnologici moderni (Java/Kotlin e Spring Boot per il backend ed Angular 2 per il frontend), scrivere test è diventato un’attività quotidiana per gli sviluppatori.

Cerchiamo, per quanto possibile, di seguire il TDD: data una funzionalità, vengono scritti prima i test e solo in seguito la logica di business relativa alla funzionalità stessa. Una volta completato lo sviluppo si lanciano i test e si verifica se il comportamento definito inizialmente è rispettato dall’implementazione.

Se tutti i test passano, allora la funzionalità può definirsi completata.

Altrimenti, quando qualche test fallisce, le possibilità sono due:
1. L’implementazione non aderisce alle specifiche. Ad esempio non gestisce dei corner case, oppure restituisce un set di dati non coerente con le aspettative;
2. La definizione dei test è errata, ovvero sono stati definiti dei test non aderenti alle specifiche oppure con dati di input non coerenti con l’output atteso.

Test software life cicle - Aton - Immagine di macrovector su Freepik

A prescindere da quale sia la motivazione che ha portato i test a fallire, lo sviluppatore deve rimettere mano al codice per fare in modo che tutti i test relativi alla funzionalità che sta sviluppando risultino verdi. Quando questo accade il lavoro può ritenersi completato e lo sviluppatore può aprire una pull request con quanto fatto.

E’ in questo momento che entra in gioco la seconda fase del processo di sviluppo del backend.
La creazione di una pull request scatena una pipeline in Azure DevOps la quale, diligentemente, esegue i test della nuova funzionalità e di tutte le funzionalità precedenti. Questa operazione lavora sul piano della cristallizzazione: viene verificato che la nuova logica non strida con quella già esistente.

Se qualcosa viene rotto, la pipeline s’interrompe ed impedisce il rilascio nel branch principale.

Come saranno i test del futuro?

La scrittura di test è un’attività che ha portato grande valore ad Aton, e quindi intendiamo continuare a sostenerla nel tempo.
Tuttavia, non è detto che il modo in cui scriveremo i test rimarrà sempre lo stesso.

Il tema delle intelligenze artificiali generative e di come esse possano diventare strumenti di supporto per gli sviluppatori (e non solo) migliorandone la produttività, è molto discusso e rilevante nella comunità tech.

Tra tutti gli strumenti attualmente disponibili, GitHub Copilot è sicuramente quello più utile a chi scrive codice per professione, anche nella scrittura dei test. E’ infatti possibile, fornendo il contesto adeguato, far generare a GitHub Copilot unit test (ed altre tipologie) per una determinata funzionalità.

Utilizzare questo approccio ha una serie di pro e di contro:
👍🏻 Tempi di sviluppo più brevi. Lo sviluppatore dedica meno tempo alla scrittura di test e più tempo alla logica di business;
👍🏻 Casi di test non previsti. L’intelligenza artificiale può generare dei casi di test non previsti dallo sviluppatore, aumentando quindi la solidità della code base;
👍🏻 Casi di test imparziali. Lo sviluppatore tende ad essere amorevole nei confronti del codice e quindi è propenso a scrivere dei test conservativi che non lo mettono realmente alla prova (questo è ancora più marcato quando chi scrive i test e chi implementa sono la stessa persona);
👎🏻 Falso senso di sicurezza. I test generati dall’intelligenza artificiale devono essere sempre rivisti dallo sviluppatore per correggere eventuali errate interpretazioni o contesti troppo vaghi per l’IA.

Se questa sarà la strada definitiva per il testing, ad ora non ci è dato saperlo. Tuttavia, in Aton sono state avviate delle attività di ricerca e sviluppo proprio su GitHub Copilot per capire che impatto esso possa avere nel daily life di uno sviluppatore.

Conclusione

Se all’inizio dell’articolo vi siete chiesti perché abbiamo festeggiato così tanto all’avvento del millesimo test, ora dovrebbe essere un po’ più chiaro.

Mille test non sono solo una statistica, ma sono la testimonianza di un percorso che ha cambiato il nostro modo di lavorare. Un percorso che sta pian piano industrializzando il processo di sviluppo in Aton e che, anche grazie ai test, riesce a produrre software di qualità.

Se ti stai ancora chiedendo se vale la pena scrivere i test, noi di Aton possiamo risponderti di sì.

Ne vale la pena perché cambia il tuo modo di lavorare. Ne vale la pena perché cambia il tuo modo di pensare. Ne vale la pena perché aumenta la qualità del codice che scrivi. Ne vale la pena perché ti dà la sicurezza che quello che hai scritto non rompe quello che era già scritto. Ne vale la pena perché, in fondo, vedere tutte quelle spunte verdi quando passano i test provoca un picco di dopamina non indifferente!

 

linkedin-icon-img instagram-icon-img facebook-icon-img

ATONEWS
Le persone al centro
Nuove tecnologie mobile onRetail - Aton
Retail · Retail Management
Cristiano Negri
La realtà aumentata e le altre tecnologie mobile che cambieranno il tuo modo di lavorare
26/10/2023
Approfondisci
RFID al Wireless IoT Tomorrow 2023 - Aton
RFID
Alberto Canova
Wireless IoT Tomorrow 2023: un evento imperdibile nel mondo RFID
24/10/2023
Approfondisci
Tech
Nicolò Venchierutti
SOTI SYNC 2023: il nostro viaggio nel futuro
05/10/2023
Approfondisci
Contenuti multimediali - gestione con .onSales B2B
Food & Consumer Goods · E-commerce
Sandro Gava
Documenti e contenuti multimediali in un unico portale B2B
20/09/2023
Approfondisci
Co-design
Sales
Giovanni Bonamigo
Design thinking: un viaggio nel co-design con il nostro team UX
29/06/2023
Approfondisci
Dispositivi wearable - Aton
Hardware
Nicolò Venchierutti
Computer indossabili, One size fits all?
15/06/2023
Approfondisci
JCON OpenBlend Slovenia 2023
Tech
Michele Mauro
Di nuovo in viaggio: JCON Slovenia 2023
09/06/2023
Approfondisci
Barcode 1D e 2D_Aton
Tech
Alberto Canova
Barcode: cambiamento epocale o evoluzione naturale?
31/05/2023
Approfondisci
Aton Spring I/O 2023
Tech
Michele Mauro
Il processo OpenAPI di Aton allo Spring I/O 2023
25/05/2023
Approfondisci
SoftPOS-Aton-img
Food & Consumer Goods · Sales
Sandro Gava
SoftPOS: il futuro dei pagamenti nel mercato B2B
17/05/2023
Approfondisci
caricatore-unico-usbc-img
Hardware·Tech
Maurizio Bovo
Caricabatterie unico: che cosa cambierà dal 2024?
02/11/2022
Approfondisci
Android-zero-touch-enrollment-img
Tech
Giuseppe Brando
Android zero-touch enrollment: device configurati in pochi click
15/04/2021
Approfondisci
CASE STUDY
Ecco alcune delle nostre esperienze
Leggi
caffè-vergnano-case-study-aton-img

Caffè Vergnano

Food & Consumer Goods
Oggi Caffè Vergnano è presente sul territorio in 19 regioni con oltre 4.500 clienti Ho.Re.Ca e nel mondo con più di 70 locali in 19 paesi.
Approfondisci
Leggi
unicomm-banner-img

Unicomm

Retail Vendite Omnichannel
Nel corso dei suoi quasi 70 anni di storia Unicomm è cresciuto fino ad essere presente oggi in 7 regioni e 32 province italiane. Con oltre 1500…
Approfondisci
Leggi
shv-energy-case-study-img

SHV Energy

Energy
In una sola web console l’azienda registra i dati, gestisce gli ordini, pianifica i rifornimenti, la manutenzione e si assicura che tutte queste operazioni vengano riportate in modo immediato e automatico nel gestionale.
Approfondisci
Leggi
gruppo-poli-banner-img

Gruppo Poli

Retail Vendite Omnichannel
Poli ha unito tradizione e innovazione nel proprio modo di fare impresa ponendo particolare attenzione ai collaboratori, ai clienti e al territorio. In Aton, ha trovato un partner con…
Approfondisci
Leggi
cattel-banner-img

Cattel

Food & Consumer Goods Vendite Omnichannel
Cattel S.p.a, azienda leader nel Nord d’Italia nella distribuzione di prodotti alimentari nel canale Ho.Re.Ca ha profondamente trasformato la raccolta ordini adottando la soluzione .onSales B2B di Aton.
Approfondisci
Leggi
Despar-Case-banner-img

Despar

Retail Vendite Omnichannel
Tutte le operazioni di negozio gestite in palmo di mano per gli oltre 600 punti vendita Despar, Eurospar e Interspar
Approfondisci