TDD (Test-driven development) e i meccanismi di Test Unitario e Funzionale.

Con questo mio nuovo post, vorrei introdurre un’aspetto molto importante delle Metodoligie 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.

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 innavertitamente 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) è una metodologia di svilluppo 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 succesivamente il codice da testare tu già sapai 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 veloceente 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.

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.

Giovanni Masucci

Be Sociable, Share!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *