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
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:
- 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.
- 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.
- 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.
Approfondimento sulla Metodologia Agile
Vantaggi del TDD
Il TDD non è la cura per tutti i mali, ma porta sicuramente dei vantaggi considerevoli in un team di sviluppo:
- 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: Ad 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.
Dai un’occhiata ai nostri Corsi in aula e da remoto LaraMind!
Se hai intenzione di intraprendere un percorso di formazione customizzato riguardante il TDD, non esitare a contattarci a amministrazione@laramind.com