Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Test Driven Development

Articolo scritto da Luigi Cirillo
Pagina 1 di 8

Il Test Driven Development (TDD) è una tecnica non tradizionale per lo sviluppo del software e consiste in una sorta di "sviluppo guidato dai test".

Il TDD è una valida alternativa alla tradizionale tecnica a cascata (waterfall) che prevede analisi, progettazione, scrittura del codice e, solo alla fine, testing e debug.

(L'articolo continua più sotto...)

Il TDD, invece, prevede che la scrittura del codice avvenga mediante dei test secondo un ordine ben preciso:

  1. si scrive il test prima ancora che esista il codice da testare (se eseguito, ovviamente, il test fallisce);
  2. si scrive il codice minimo affinchè il test possa essere superato;
  3. si esegue il refactoring del codice affinchè questo si adegui a standard qualitativi più elevati.
Nota: il refactoring è una procedura che ha come finalità il miglioramento di un programma senza alterarne il funzionamento. In sostanza, la finalità di questa procedura consiste nel migliorare la qualità del codice, la sua leggibilità e/o le prestazioni dell'applicazione.

Brevi cenni sorici

Nonostante questa tecnica sembri risalire a molti anni fa, essa è stata formalizzata da Kent Beck solo nel 2003. Di fatto, però, il TDD è fortemente legato al concetto di test-first programming(TFP), paradigma di programmazione dell' extereme programming (XP) formalizzato già nel 1999 e ultimamente molto in voga in ambito industriale.

I requisiti

Il TDD prevede la creazione, da parte dello sviluppatore, di unit test (test di unità) automatizzati prima della scrittura del codice stesso. I test contengono asserti che possono essere sia veri che falsi. Il superamento dei test conferma che il software ha il comportamento desiderato e quindi lo sviluppatore si può dedicare alla rifattorizzazione del codice.
Gli sviluppatori spesso usano framework di test. Nel nostro esempio utilizzeremo il più noto su piattaforma Java, jUnit.
Immaginiamo di dover sviluppare, con la tecnica che andremo ad apprendere, un programma che sia in grado di dirci se una frase è l'anagramma di un'altra.

Un caso di studio

Innanzitutto partiamo dalla definizione di anagramma: un anagramma (dal greco ana-, "indietro", e graphein, "scrivere") è il risultato della permutazione delle lettere di una o più parole compiuta in modo tale da creare altre parole o eventualmente frasi di senso compiuto. Il significato delle parole risultanti non di rado risulta affine al contesto originario, o ad esso completamente opposto, producendo così sorpresa: o con effetti umoristici o, comunque, con interessanti associazioni (es.: attore = teatro, bibliotecario = beato coi libri). Trovate qui una più precisa descrizione.
La nostra speculazione ovviamente si limiterà all'accezione più generica, includendo eventualmente anche le frasi non di senso compiuto. Trascureremo anche la complessità computazionale degli effetti umoristici.

L'approccio

Mettiamo subito in pratica i principi base del Test Driven Development cominciando la nostra speculazione sul dominio applicativo al contrario di come faremmo di solito. Quindi piuttosto che procedere formalizzando la raccolta dei requisiti attraverso una lista di possibili task da implementare, procediamo descrivendo una serie di test che vorremmo che il nostro programma fosse in grado di superare.
La prima domanda da porsi, anche se può sembrare scontata è: cosa è un test e quali sono le sue caratteristiche.
Attingendo dalla letteratura informatica definiremo un test come una prova di correttezza di un determinato asserto.
Un buon test, inoltre, deve essere:

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Corso Ruby e Ruby On RailsCorso Ruby e Ruby On Rails
Creare software ed applicazioni Web con Ruby e ROR. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122