Test Driven Development: prima i test, poi il codice

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 di Kent Beck (Che censirò nei prossimi giorni).

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...