Unit testing: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 39:
==Applicazioni==
===Extreme Programming===
Lo unit testing è la parte fondamentale dell'[[Extreme Programming]] (XP), che si basa su uno [[unit testing framework]], che può essere fornito da terze parti o creato all'interno del gruppo di sviluppo.
L'Extreme Programming usa la creazione di unit test per lo Sviluppo Guidato dal Test (TDD, [[test-driven development]]. Lo sviluppatore scrive uno unit test che evidenzi una funzionalità richiesta dalle specifiche o un difetto possibile. Il test può fallire perché la funzionalità non è stata ancora implementata o perché il difetto cercato è effettivamente verificato. Quindi lo sviluppatore scrive il codice funzionale più semplice possibile affiché il test sia eseguito con successo.
Tutte le classi sono testate in questo modo e lo sviluppatore rilascia il codice di test insieme al codice funzionale da esso testato. La XP, con uno unit testing approfondito, presenta tutti i benefici descritti sopra e i test sono utilizzati successivamente come test di regressione.
===Tecniche===
Normalmente lo unit testing è automatizzato, ma può anche essere eseguito manualmente. Non c'è alcuna raccomandazione in proposito da parte dello [[IEEE]]. L'approccio manuale può richiedere la documentazione dei passi necessari per l'esecuzione dello unit test. In ogni caso, lo scopo dello unit test è quello di isolare un modulo a certificarne la correttezza e l'automatizzazione, a differenza del test manuale, è un modo efficiente per raggiungere questi obbiettivi e portare i benefici descritti.
Con l'approccio automatico, per realizzare il completo isolamento del modulo da testare, il codice fuunzionale è testato al di fuori del suo ambiente naturale, in un apposito framework. Questo approccio ha il pregio di evidenziare dipendenze non richieste del modulo in esame dagli altri.
In un framework automatizzato lo sviluppatore codifica i casi da testare in modo che verifichino la correttezza del modulo e durante l'esecuzione viene riportato l'eventuale fallimento di ogni test. In alcuni casi di fallimento di test critici, l'intera procedura di test viene fermata.
La conseguenza dello unit testing è un approccio alla programmazione che favorisce la scrittura di codice in moduli indipendenti ed interoperanti, che a sua volta contribuisce, insieme ai [[Design pattern]] e ad altre pratiche comuni alla realizzazione del miglior codice possibile.
===Unit testing framework===
Esistono framework sviluppati per lo unit testing di una miriade di linguaggi. È generalmente possibile realizzare lo unit testing senza il supporto di uno specifico framework, scrivendo il codice che testi il modulo e che implementi meccanismi quali le asserzioni, le eccezioni o le uscite anticipate per segnalare i fallimenti.
Questo approccio è prezioso perché semplifica l'adozione dello unit testing, ma è anche limitato dall'assenza di molte funzionalità avanzate dei framework disponibili.
==See also==
|