Il Test Driven Development è un fattore chiave di successo per costruire delle app che combinino funzionalità e qualità.
Spesso ti abbiamo parlato dello sviluppo Agile del software e di come sia l'approccio che da anni utilizziamo con successo in DevInterface. Un ruolo cruciale, in questa metodologia, ce l'ha lo sviluppo guidato dai test: vediamo di cosa si tratta.
Come ben sai, quando ci presenti un progetto lo "spezzettiamo" in user story, che verranno successivamente allocate all'interno di ogni sprint. A questo punto iniziamo a sviluppare l'applicazione, e ogni sviluppatore si prende a carico una o più user story. È qui che inizia il Test Driven Development (TDD): per far sì che la tua app sia perfetta, man mano che le user story vengono sviluppate la loro capacità di soddisfare determinati requisiti viene testata.
Si inizia dalla fase rossa: dopo aver definito precisamente le caratteristiche che una determinata porzione di codice dovrà soddisfare (si tratta della user story), si inizia scrivendo un test automatico che verifichi la capacità del programma di soddisfare queste funzionalità. Quindi il test verrà creato prima del software vero e proprio; ne consegue che, in un primo momento l'esecuzione di tale test fallirà.
Immagina di dover costruire una casa. Sai che dovrà avere certe caratteristiche: una certa altezza, una certa ampiezza, un certo numero di porte e finestre, un certo numero di stanze. Prima di costruirla, annoterai queste caratteristiche su un foglio di carta, ed esso sarà il tuo strumento di test. Ovviamente se proverai ad "eseguire il test" prima di costruire la casa esso fallirà poiché non esiste ancora nessuna casa.
Si prosegue poi con la fase verde: in questo secondo step il programmatore scrive una porzione di codice minima, con l'unico obiettivo di superare il test. Non è consentito sviluppare altre funzionalità oltre a quelle richieste, nonché elementi estetici o qualitativi: il software deve funzionare.
Per quanto riguarda la nostra casa è ora di costruire i muri portanti della giusta altezza, lasciando i buchi per le finestre e le porte, delineando gli spazi per quelle che diventeranno le camere. Non è certo il momento di pensare al colore delle pareti o ai mobili che compreremo per arredare la camera da letto. La nostra casa sarà brutta da vedere, ma nel nostro foglietto potremo mettere una bella X accanto alle annotazioni, il che significa che l'abitazione avrà passato il test.
L'ultimo passo consiste nella fase grigia: a questo punto si può pensare all'ottimizzazione del codice, in gergo refactoring. Esso consiste nell'alleggerimento del codice, nella sua semplificazione come ad esempio l'eliminazione di duplicati e così via. Al termine di questo processo verranno eseguiti nuovamente i test, per controllare che le ottimizzazioni non siano andate ad indebolire le funzionalità.
Ora possiamo andare a levigare i nostri muri per prepararli alla stesura del colore e all'inserimento delle porte e delle finestre, sistemando i dettagli e le piccole imperfezioni per preparare al meglio la struttura al suo abbellimento. Dobbiamo stare attenti però a non andare a minare la struttura portante precedentemente costruita.
In questo modo riusciamo a costruire delle app che soddisfino il requisito principale: funzionare. In un secondo momento penseremo all'aspetto estetico e all'usabilità che, ovviamente, sono entrambi importantissimi. Così possiamo sviluppare app interamente testate, dove con l'approccio tradizionale (creazione di test dopo lo sviluppo del software) si rischierebbe di sviluppare nuove funzionalità senza aver ultimato quelle principali; con il TDD questo pericolo non si presenta perché gli sviluppatori hanno ben chiari gli obiettivi fin dall'inizio e riescono inoltre a stimare lo stato di avanzamento del progetto. In conclusione, possiamo dire che questa strada è più vantaggiosa perché gli sviluppatori possono addirittura cambiare radicalmente alcuni aspetti estetici dell'app senza il pericolo di influire sulle funzionalità.
Pensi che questo approccio guidato dai test sia performante o credi che esistano delle metodologie migliori per garantire la massima ottimizzazione nello sviluppo delle app? Faccelo sapere nei commenti!
Grazie per aver letto l'articolo.
Per maggiori informazioni contattaci qui, oppure su Facebook o Twitter, dove potrai anche seguirci per rimanere aggiornato sui nostri articoli.