Chi mi conosce sa che da un po' mi sono appassionato allo Unit Testing e quando possibile cerco di avere una "batteria" di test da lanciare per verificare il corretto funzionamento della mia applicazione.
Non è sempre stato cosi.
Anni fa, la prima volta che sentii parlare di Unit Testing, rimasi stupito e parecchio scettico sul valore reale dei test, soprattutto sul fatto che valesse la pena "perdere" tempo a scriverli.
Quindi lasciai la cosa in fondo alla mia lista dei ToDo.
Ma i rumors attorno allo Unit Testing aumentarono, cosicchè la questione riaquisì priorità nella mia lista al punto che decisi di dargli una seconda chance.
Intallai NUnit e provai a scrivere i test man mano che il codice della mia applicazione veniva scritto.
Funzionava, ma il rigore necessario a tenere i test aggiornati (anche a seguito di modifiche nell'applicazione) era notevole.
I vantaggi però già iniziavano a farsi vedere, ma mano che l'applicazione cresceva e si introducevano modfiche a ciò che avevo scritto tempo prima, iniziavano a far capolino le prime barre rosse ad indicare che quella piccola innocente modifica aveva fatto danni altrove nella mio codice.
Ma l'onere di scrivere i test era sempre alto, e (ahime) non sempre mi "ricordavo" di scrivere quel test. Ci voleva una metodologia più rigorosa e più divertente.
Avevo già sentito parlare di TDD (Test Driven Development) ma se avevo fatto fatica ad accettare l'idea di scrivere codice per testare le mie applicazioni, figuratevi cosa pensai quando mi proposero di scrivere prima i test e poi il codice!! :-) ma il fatto che a parlare di TDD non fossero proprio gli ultimi arrivati mi convinse a dare una chance anche al TDD.
Cosi con l'occasione di iniziare un nuovo progetto provai a scrivere un test prima di scrivere il codice sul ritmo Red-Green-Refactoring.
Ammetto di essere rimasto stupito, la cosa funzionava e anche bene ed oggi cerco di usare il TDD per i miei progetti. Il fatto di scrivere test è integrato nel processo di sviluppo dell'applicazione e questo nasconde l'onere di scrivere i test, visto che diventano una cosa necessaria per procedere.
Poi quando sono stato all'AgileDay e ho visto altre cento persone che usano TDD....