Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 207
  • Trackbacks - 5

 

Unit Testing vs Test Driven Development

Sto preparando delle slide per un mini-corso sullo unit testing che devo tenere ai colleghi in azienda.

Dopo aver partecipato all'ultimo evento in Microsoft ed in particolare alla sessione di Andrea sullo Unit Testing, ho scaricato le slides per prendere spunto.

Riguardandole mi sono posto il dubbio sulla differenza, se esiste, tra Unit Testing e Test Driven Development.

Nella sua sessione Andrea non ha accennato al TDD e mi pare di aver capito che lo ha assimilato all'interno del terminte Unit Testing.

E' cosi veramente ?

Io ho pensato di definire lo Unit Testing come la tecnica di creare test che verifichino la validità dei componenti e delle loro risposte quando soggetti a determinati e specifici input.

Il Test Drived Development è invece una metodologia dell'extreme programming che si basa sullo unit testing per gestire un processo di sviluppo di tipo Test-First Design.

E' corretto ? Oppure ho interpretato male le slides di Andrea ?

 


Feedback

# re: Unit Testing vs Test Driven Development

Gravatar Unit Testing è il testare le varie funzionalità del codice a livello di unità (affiancato a Integration Test, User Test, Regression Test, Load Test, etc...)

TDD è la metodologia per cui è meglio scrivere prima i test, farli fallire, farli funzionare e fare il refactor del codice.

UT è lo strumento con cui TDD può essere applicato, ma UT può essere tranquillamente usato senza TDD... 16/12/2004 19.23 | Lorenzo Barbieri

# re: Unit Testing vs Test Driven Development

Gravatar Se gli unit test vengono scritti dopo che il metodo/la classe /l'applicazione è già stata scritta,
-come si fa a garantire che il codice del test non contenga errori?
-come si fa a sapere se i test sono sufficientefmente fitti?

Il TDD è una risposta a queste domande.

Dal punto di vista pratico trovo utile ed efficace inizare ad applicare lo unit testing senza TDD.

Dopo un po si pratica il passo al TDD facendo step larghi (quindi una iterazione barra rossa-implementa-barra verde potrenne comprendere un intero metodo o una intera classe).

Con il procedere viene spontaneo sringere gli step ed avvicinarsi al vero TDD.

Tra queste slide trovi indicazioni per il primo step (vedi le note):
http://www.agileday.it/slides/LucaMinudel.zip

HTH 16/12/2004 21.00 | Luca Minudel

# re: Unit Testing vs Test Driven Development

Gravatar Come ti hanno già detto puoi fare unit testing senza fare TDD. Il TDD è una tecnica di design che usa gli unit test.

Test Driven e Test First possono avere significati diversi (e per me lo hanno):

Premetto: possiamo ragionevolmente dire che i due termini si equivalgono e stop. A me pero' piace fare una distinzione derivata dalla mia esperienza e fortunatamente non sono più l'unico a pensarla cosi infatti ti riporto per semplicità la descrizione data da Dave Thomas (Pragmatic Programmer):

- il test driven development è un modo di pensare lo sviluppo. Si tratta di utilizzare i test per guadagnare la prospettiva del proprio design e della sua implementazione. Si "ascolta" quello che i test hanno da dire e si altera il codice di conseguenza. Si trova difficile testare qualcosa in isolazione? Allora si fa refactoring per ridurre l'accoppiamento. E' impossibile fare un mock di un certo sottosistema? Allora si usano facade o interfaccie per rendere più chiara la separazione.

- il test first development è un passo ulteriore in cui non si scrive MAI una riga di codice fino a quando non si ha prima un test che fallisce e deve essere "risolto". Vuoi scrivere una nuova classe? Prima scrivi un test che la istanzia, vedi il test fallire e quindi implementi la classe fino a che il test non passa.

Possiamo dire che il test-first è una sottoclasse del test-driven. Ha tutti i benefici del test-driven e in più una componente "rituale" di test e sviluppo in un certo ordine. Il coverage è del 100% o quasi.

Per me il test driven è una componente essenziale dello sviluppo mentre il test-first mi sembra a volte eccessivo. E' un po' la differenza tra i metodi agili in generale ed eXtreme programming in particolare: il test driven è una pratica importante ed universale mentre il test-first è un'implementazione particolare e non sempre applicabile. 16/12/2004 22.58 | Marco Abis

# re: Unit Testing vs Test Driven Development

Gravatar Non solo ho avuto la conferma di quanto pensavo, ma mi avete dato qualche feedback ulteriore (grazie Luca per le slides) sull'argomento.
Devo dire che l'argomento è interessante, cosi come un po tutte le tematiche relative ad xp ed agile.
Peccato che siano pochi secondo me gli sviluppatori a conoscenza di queste "pratiche" e sia qundi difficile confrontarsi...per fortuna esiste il blog di ugidotnet ;) 16/12/2004 23.52 | Luca Mauri

# re: Unit Testing vs Test Driven Development

Gravatar ciao a tutti,vorrei chidervi se sapreste indicarmi qualche fonte per la definizione di una metologia per uno unit e integration test.sono alle prime armi.....
grazie 18/05/2005 11.45 | Andrea

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri