Il Test Driven Development si basa sui risultati dei casi di test specificati. La procedura ciclica garantisce che il codice sia trasferito al sistema produttivo solo quando tutti i requisiti software sono stati soddisfatti. Ciò significa che i componenti del codice vengono rifattorizzati e nuovamente testati fino a quando il test non viene più visualizzato come difettoso. Con questo metodo il software viene arricchito gradualmente con nuove funzioni, poiché dopo ogni test superato viene scritto un nuovo codice sorgente. Per questo motivo TDD è anche uno dei modelli di processo incrementali nello sviluppo del software.
I singoli casi di test generalmente non sono sottoposti al ciclo per più di qualche secondo o minuto: in questo modo i risultati si riflettono rapidamente nel codice produttivo. Affinché l’iterazione abbia luogo senza ulteriori sforzi, sono necessari uno strumento e un framework TDD. In genere, gli sviluppatori utilizzano uno strumento di automazione dello sviluppo come CruiseControl o Jenkins. Questi consentono l’integrazione continua e senza errori dei componenti nel codice sorgente. Anche JUnit, Maven e Ant sono popolari nello sviluppo di Java. In generale, i test sono sempre scritti nella stessa lingua del codice funzione. Per PHP ci sono strumenti come Ceedling o CMock.
Ma come funziona esattamente la procedura di test? Il ciclo che i programmatori seguono nel Test Driven Development è anche chiamato cicloRed-Green-Refactor. Descrive le singole fasi da seguire per conseguire la massima efficienza:
- Fase rossa: in questa fase immedesimatevi nel ruolo dell’utente che desidera usare il codice in modo semplice. Scrivete dunque un test che comprenda dei componenti che non sono ancora stati implementati. Dovete pertanto decidere quali elementi sono veramente necessari per il funzionamento del codice.
- Fase verde: supponiamo che il test abbia esito negativo e sia evidenziato in rosso. Ora assumete il ruolo di un programmatore che cerca di trovare una soluzione semplice. Importante: scrivete solo la quantità minima di codice necessaria e integratela nel codice produttivo, in modo che il test sia contrassegnato con il verde.
- Refactoring: in questo passaggio il codice produttivo viene letteralmente “ripulito” e la sua struttura perfezionata. Ciò significa che dovreste completarlo e ristrutturarlo in modo che sia elegante e comprensibile dal punto di vista dello sviluppatore. Eliminate ad esempio le duplicazioni del codice e portatelo a livello professionale.
Assicuratevi che le singole attività non si sovrappongano. Ciò significa che non dovete scrivere nessun test nella fase 2 e 3 e nessun codice produttivo nella fase 1 e 3.