TDD

TDD: Test Driven Development

Il Test Driven Development è una componente della filosofia Agile e permette di risolvere problemi comuni che nascono man mano che il progetto aumenta di dimensione.

Il TDD comprende 4 fasi: analisi, design, sviluppo e testing. In altre parole, significa comprendere il dominio del problema e analizzarlo, progettare un’applicazione per la soluzione del problema, svilupparla e testarla. Per essere chiari TDD non significa solo creare unit test, ma è un termine che si riferisce all’intero processo di sviluppo.

Il processo

Test Driven Development

E’ necessario scrivere i testi prima di implementare la funzione. Se la funzione esiste prima che il test venga scritto, non stiamo parlando di TDD, questo è solo testing.

Il processo non è complicato, bisogna solo seguire alcuni passi e ripeterli durante la stesura del codice:

  1. Scrivi un unit test destinato a fallire: Deve essere il più semplice e chiaro possibile e deve essere scritto con il proposito di fallire, cioè devi scrivere un test che descriva come il codice NON deve comportarsi.
  2. Esegui il test: Se il test fallisce, è il momento di scrivere il codice minimo per far passare il test, attenendoti il più possibile allo stretto necessario per questo scopo, senza aggiungere nuovi elementi.
  3. Migliora il test: Se credi che sia possibile migliorare il codice che hai scritto, fallo ed esegui di nuovo i test. Quando sarai soddisfatto, crea un nuovo unit test e vai avanti.

L’immagine mostra il pattern RED – GREEN – REFACTOR usato nel TDD.

Vantaggi del TDD

Il TDD non è la cura per tutti i mali, ma porta sicuramente dei vantaggi considerevoli in un team di sviluppo:

  • Riutilizzo del codice: Creando ogni funzionalità con il codice necessario per passare allo step successivo (GREEN), permette di individuare facilmente quando ci sono funzioni che utilizzano la stessa struttura o parti di codice. Questo ti permetterà di riutilizzare codice già scritto.
  • Lavoro in gruppo: Gli sviluppatori con una seniority più avanzata avranno maggiore fiducia del codice prodotto dai junior, perché sapranno che il codice sarà quantomeno validato da un processo controllato.
  • Evitare l’overdesign: Il TDD permette di avere una visione del progetto pezzo per pezzo e ti aiuterà a evitare di usare strutture o pattern inutili.
  • Sensazione di un lavoro ben fatto: A ogni commit del tuo progetto, avrai la sensazione che il tuo codice è ben fatto perché i test saranno sempre validi e non avrai dubbi di aver intaccato qualche altra funzionalità.
  • Aumentare la qualità del software: In ogni fase di refactoring ti concentrerai sul rendere il tuo codice maggiormente efficiente e mantenibile, verificando che l’intero progetto funzioni correttamente dopo le tue modifiche.

 

Leave a reply