Sto pensando allo sviluppo test-driven e a quello test-first...
tutto sommato il primo ingloba il secondo ma la differenza è sostanziale.
Infatti nello sviluppo test-driven NON scriviamo analisi dettagliata sulla carta, bensì scriviamo test sottoforma di codice sorgente e USIAMO i test per orientare al meglio la progettazione e il disegno del software. I test ci guidano nel disegno e nell'implementazione.
Questi sono gli steps e le regole da seguire (vi ricordo che l'eXtreme Programming prevede sviluppo iterativo - un pò come RUP - quindi i passi seguenti vanno iterati "n" volte):
- scriviamo test code che si riferisca a piccole unità funzionali e testiamo qualsiasi cosa possa sollevare una exception;
- siccome non abbiamo ancora scritto la funzionalità il nostro test code DEVE fallire;
- scriviamo il code affinchè passi il test;
- usiamo il refactoring e assicuriamoci che le nostre classi siano disegnate il meglio possible;
- assicuriamoci che tutti i test vengano eseguiti con successo al 100% ogni volta.
Nello sviluppo test-first, al contrario, non scriveremo mai codice di produzione prima di aver passato tutti i test cases perchè l'obiettivo è quello di scrivere prima tutti i test, poi sviluppare le funzionalità e infine testarle.
Voi che ne pensate?