TDD – Sviluppo guidato dai test: Test Unitario e Funzionale.
Con questo mio nuovo post, vorrei introdurre la tecnica dello sviluppo guidato dai test un aspetto molto importante delle Metodologie di Sviluppo Agile
La raccolta di feedback è di fondamentale importanza per lo sviluppo agile di un’applicazione. Il metodo con il quale è possibile controllare il proprio software tramite questo meccanismo di feedback, consiste nello scrivere codice di Test Funzionali e Unitario che permetta di ricevere feedback dall’applicazione frequentemente e ripetitivamente.
I Test Unitari sono test che si focalizzano su piccole unità di un’applicazione. In un’applicazione orientata agli oggetti, le piccolissime unità coincidono con i metodi pubblici basati sulle interfacce delle classi stesse.
I Test Unitari si focalizzano su una singola classe, e non richiedono altre classi di oggetti a run-time. Il loro scopo è di validare che una singola unità di codice stia lavorando come ci si aspettava da essa.
I Test Funzionali testano, invece, un intera funzionalità dell’applicazione. Questi test tipicamente fanno uso di diverse classi e oggetti a run-time a differenza dei primi. Il loro scopo è quello di validare che una funzionalità dell’applicazione stia lavorando come ci si aspettava.
Benefici del Testing
Quali sono i benefici nel testare e scrivere test unitari e funzionali. Per prima cosa, essi sono una grande via per produrre documentazione al codice.
I test unitari possono velocemente raccontare l’esatta storia di un blocco di codice esistente. Similarmente, i test funzionali, documentano le funzionalità come sono state implementate all’interno dell’applicazione. Se tu scrivi questi test in modo costante, allora la documentazione continuerà a evolvere naturalmente così come evolve l’applicazione.
Essi sono anche un inestimabile meccanismo di feedback che costantemente rassicura lo sviluppatore e i clienti che il codice e l’applicazione sta lavorando nel modo che ci si aspettava.
Tu fai girare i tuoi test ogni volta che crei delle modifiche al codice così hai un feedback immediato se la modifica non piacerà al software o hai inavvertitamente modificato il comportamento del sistema, in modo da individuare immediatamente queste problematiche. Questo realmente incrementa la confidenza che gli sviluppatori hanno del comportamento delle applicazioni e individuare errori in molti progetti di successo.
Questo immediato feedback aiuta e facilita i cambiamenti supportando il disegno base del codice. In tal modo vi risulterà piacevole creare miglioramenti al codice esistente con un insieme di test che provvede a darvi un immediato feedback di come i cambiamenti apportati alterano il comportamento dell’applicazione. La confidenza raggiunta con un insieme di test unitari e funzionali aiuta gli sviluppatori a scrivere ottimi software, rilascia un’applicazione molto stabile e produce prodotti di qualità.
Il Test-driven development (TDD)
Il Test-driven development (TDD) è una metodologia di sviluppo del software che aiuta a creare un ambiente di comodità e verifica con il tuo insieme di test organicamente in crescita con la tua applicazione, e in continuo aggiornamento.
Infatti, stipulando che tu inizializzi la tua applicazione scrivendo per primo il test e successivamente il codice da testare tu già saprai cosa scrivere, i seguenti passi sono il risultato di questo processo appena descritto:
1. Inizia scrivendo un test che genera un veloce errore;
2. Esegui il test per essere sicuro di questo errore;
3. Aggiungi velocemente il giusto codice alla classe che tu stai testando, giusto il codice necessario affinché ti permetta il passaggio del test;
4. Esegui di nuovo il test per essere sicuro del suo passaggio;
5. Riorganizza il codice e rimuovi ogni logica ripetitiva o perfeziona eliminando le ridondanze mentre esegui il test di raggiungimento del passaggio.
Questi passaggi sono ripetitivi rispetto l’intero processo di sviluppo, comunque scrivendo il prima il tuo test e iniettando la scrittura del processo di test direttamente dentro il processo di codifica sarai sicuro di un test aderente al codice scritto.
Questa livello di servizio ti aiuterà a minimizzare lo stress e la paura che spesso può accompagnare complesse applicazioni e costruire la tua confidenza con esso provvedendo continuamente ad avere un feedback positivo e progressivo alle modifiche realizzate.
Conclusioni
Anche per oggi questo mio post introduttivo alle principali metodologie di Testing del Software è terminata, nei post successivi approfondiremo l’argomento vedendo nel dettaglio le varie tecniche di Testing appena descritte.