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/)

Leave a Reply

You must be logged in to post a comment.