Un metodo non tradizionale e agile per lo sviluppo e il design del software è il Test Driven Development (TDD): sviluppo guidato dai test. E’ un’alternativa al solito metodo a cascata (waterfall), secondo il quale, dopo un’adeguata analisi e progettazione, si inizia a scrivere il codice e solo alla fine si passa al testing e al debug.
Il TDD, invece, (previa analisi e progettazione, ovviamente) consiste nello scrivere il proprio codice ripetendo ciclicamente questi passi:
- scrivo il test prima ancora che esista il codice da testare
- il test (ovviamente) fallisce
- scrivo il codice minimo che faccia passare il test
- il test passa
- eseguo il refactoring del codice

Ma cos’è un test? Un test è formato da una serie di asserzioni che determinano il comportamento di una piccola porzione di codice (si dicono infatti Unit Test) e determinano se una certa funzionalità (feature) è soddisfatta o meno.
In questo modo ogni minima parte del mio programma è costantemente monitorata: funzioni, metodi, classi, input, output… tutto deve essere coperto da test. Dopo ogni piccola modifica che eseguo, posso devo eseguire tutti i test che coprono la parte su cui sto lavorando e controllare se il sistema funziona, ottenendo un feedback immediato.
Un altro vantaggio è che mi ritroverò a scrivere solamente il codice strettamente necessario a far passare i test, evitando codice inutile o superfluo.
Inoltre, ogni Unit Test fornisce una documentazione viva e chiara del codice, del suo sviluppo e del suo uso.
Questa metodologia di sviluppo, che fa parte dei concetti dell’Extreme Programming, è applicabile a moltissimi linguaggi di programmazione che supportino lo unit testing. Ad esempio Java che utilizza JUnit, piuttosto che Ruby, .NET o addirittura PHP, grazie a PHPUnit.
Dopo questa piccola ed incompleta introduzione, giusto per stuzzicare la vostra curiosità di programmatori, per informazioni e documentazioni più specifiche, vi rimando alle seguenti risorse:
- Introduzione all’Extreme Programming
- Introduzione al TDD
- Agile Movement
- Manifesto for Agile Software Development
Per avere un’idea più chiara di come funzioni il Test Driven Development, date un’occhiata anche a questi esempi passo-passo, così vi renderete conto delle potenzialità di questa metodologia:
- Java: Fibonacci
- C#: metodo che, dato un numero in cifra, lo restituisce in parola
- Ruby: Fibonacci
Concludo, segnalandovi il miglior libro per imparare il TDD: Test-Driven Development By Example, che tra l’altro potete scaricare (anche se non so quanto legalmente) da qui.
(fonte: http://www.bigthink.it/)