Test driven development: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Fase rossa: correggo
Archive.today ___domain not accessible from Italy (x1)) #IABot (v2.0.9.5) (GreenC bot
 
(5 versioni intermedie di 4 utenti non mostrate)
Riga 3:
Più in dettaglio, il TDD prevede la ripetizione di un breve ciclo di sviluppo in tre fasi, detto "ciclo TDD". Nella prima fase (detta "fase rossa"), il [[programmatore]] scrive un test automatico per la nuova funzione da sviluppare, che deve ''fallire'' in quanto la funzione non è stata ancora realizzata. Nella seconda fase (detta "fase verde"), il programmatore sviluppa la quantità ''minima'' di [[codice sorgente|codice]] necessaria per passare il test. Nella terza fase (detta "fase grigia" o di [[refactoring]]), il programmatore esegue il refactoring del codice per adeguarlo a determinati standard di qualità.<ref>[[Kent Beck|K. Beck]], ''Test-Driven Development by Example'', Addison Wesley 2003</ref>
 
L'invenzione del metodo (o la sua riscoperta<ref>[https://www.quora.com/Why-does-Kent-Beck-refer-to-the-rediscovery-of-test-driven-development ''Why does Kent Beck refer to the "rediscovery" of test-driven development?'']</ref>) si deve a [[Kent Beck]], uno dei padri dell'[[extreme programming]] (XP) e delle [[metodologie agili]]. Il TDD è una delle 12 regole base dell'XP, ma viene anche usato indipendentemente da questa metodologia;<ref>Newkirk, JW and Vorontsov, AA. ''Test-Driven Development in Microsoft .NET'', Microsoft Press 2004</ref> la sua applicazione è anche parte fondamentale dello sviluppo agile del software.<ref>[{{Cita web |url=http://guide.agilealliance.org/guide/tdd.html |titolo=''TDD'', Agile Alliance] |accesso=22 dicembre 2014 |dataarchivio=8 febbraio 2015 |urlarchivio=https://web.archive.org/web/20150208110313/http://guide.agilealliance.org/guide/tdd.html |urlmorto=sì }}</ref>
 
== I cicli TDD ==
Riga 13:
 
=== Fase verde ===
Nella fase successiva, il programmatore deve scrivere la quantità minima di codice necessaria per passare il test che fallisce. Non è richiesto che il codice scritto sia di buona qualità, elegante, o generale; l'unico obiettivo esplicito è che ''funzioni'', ovvero passi il test. In effetti, è esplicitamente vietato dalla pratica del TDD lo sviluppo di parti di codice non strettamente finalizzate al superamento del test che fallisce. Quando il codice è pronto, il programmatore lanciaesegue nuovamente ''tutti'' i test disponibili sul software modificato (non solo quello che precedentemente falliva). In questo modo, il programmatore ha modo di rendersi conto immediatamente se la nuova implementazione ha causato fallimenti di test preesistenti, ovvero ha causato ''regression''regressioni o peggioramenti nel codice. La fase verde termina quando tutti i test sono "verdi" (ovvero vengono passati con successo).
 
=== Refactoring o fase grigia===
{{Vedi anche|refactoring}}
Quando il software passa tutti i test, il programmatore dedica una certa quantità di tempo a farne ''refactoring'', ovvero a migliorarne la struttura attraverso un procedimento basato su piccole modifiche controllate volte a eliminare o ridurre difetti oggettivamente riconoscibili nella struttura interna del codice. Esempi tipici di azioni di refactoring includono la scelta di identificatori più espressivi, eliminazione di codice duplicato, semplificazione e razionalizzazione dell'architettura del sorgente (p.es. in termini della sua organizzazione in classi), e così via. La letteratura sul TDD fornisce numerose linee guida sia specifiche che generali sul modo corretto di fare refactoring<ref>K. Beck, ''XP Explained'', Addison-Wesley 1999</ref><ref>Robert C. Martin, ''Clean Code''</ref> In ogni caso, l'obiettivo del refactoring non è quello di ottenere del codice "perfetto", ma solo di ''migliorarne'' la struttura, secondo la cosiddetta "regola dei Boy Scout"<ref>Garry Shutler, ''The Boy Scout Rule''</ref>: "lascia l'area dove ti sei accampato più pulita di come l'hai trovata". Dopo ciascuna azione di refactoring, i test automatici vengono nuovamente eseguiti per accertarsi che le modifiche eseguite non abbiano introdotto errori.