Un esempio di semplicità col TDD: state based vs interaction based





    ((( continuo la serie di post pratici sulla semplicità )))


Gino ha a disposizione l'intero giorno in pair programming col collega per chiarirgli la differenza tra state e interaction testing. Per farla semplice da dove comincia?



Comincia in pair a implementare uno state based unit test evidenziando i passi :
  1. Istanzia l'oggetto usando Stub per eventuali dipendenze esterne
  2. Inizializza lo stato dell'oggetto da testare
  3. Richiama l'operazione da testare
  4. Verifica che lo stato finale dell'oggetto è quello atteso
Quindi implementa in pair anche un interation based unit test evidenziando i diversi passi :
  1. Dichiara i mock degli oggetti di cui si vuole testare l'interazione usando Strict mock
  2. Inizializza lo stato dell'oggetto da testare passandogli i mock e usando Stub per eventuali dipendenze esterne necessarie all'oggetto per funzionare ma di cui non ci interessa testare l'interazione
  3. Dichiara le Expectation sulle interazioni che si aspetta con i mock
  4. Richiama l'operazione da testare
  5. Verifica che le Expectation siano soddisfatte e nessun'altra interazione non dichiarata sia avvenuta con i mock


Gino passa la tastiera al collega, aspetta che emergano le prime domande sulle funzioni avanzate di mock e stub
(mockkare classi concrete o metodi statici, mock ibridi a metà mock e a metà stub, sintassi "avanzate" riducono la frizione dei mock) per superare difficoltà emerse durante la scrittura dei test.

E mostra che il "bisogno" di funzioni avanzate del tool di mocking in realtà è lo smell che ci guida dove il disegno della classe testata va migliorato, e lo migliora





Tags :   |  |  |

Print | posted @ sabato 6 giugno 2009 18.03

Comments on this entry:

Gravatar # re: Un esempio di semplicità col TDD: state based vs interaction based
by Leonardo at 08/06/2009 22.01

Ciao Luca,
perchè non fai un PDF coi i tuoi fantastici post sullo sviluppo Agile e sui tanti argomenti su cui posti regolarmente in modo da ridare vita ai vecchi post e allo stesso tempo rendere possibile la lettura dei tuoi post offline, così chi è interessato potrebbe anche stamparli e leggerli a "schermo spento".
Un esempio è il libro di Pablo (http://www.lostechies.com/content/pablo_ebook.aspx e cdn.cloudfiles.mosso.com/.../...os_solid_ebook.pdf), una raccolta di post di alta qualità stampabile e consultabile efficacemente anche offline.

Ciao e in bocca al lupo
Leonardo
  
Gravatar # re: Un esempio di semplicità col TDD: state based vs interaction based
by Luca Minudel at 08/06/2009 23.46

Ciao Leonardo e grazie del feedback e dell'idea

Ridare vita a post precedenti mi piace - quali scegliere ?
  
Gravatar # re: Un esempio di semplicità col TDD: state based vs interaction based
by Leonardo at 09/06/2009 9.32

Magari potresti fare diversi PDF (raccolte di post magari con piccoli rintocchi come l'aggiunta di un sommario, l'eliminazione di eventuali ripetizioni dovute alla natura periodica dei post ecc... se dai un'occhiata ai link che ti ho lasciato puoi vedere un buon libro fatto proprio così) e potresti dividerli per categoria ad es. sviluppo agile, refactoring, ecc... ed aggiornarli trimestralmente/semestralmente coi nuovi post in modo da rendere disponibile qualcosa di sempre aggiornato.
  
Gravatar # re: Un esempio di semplicità col TDD: state based vs interaction based
by Marco Mangia at 11/09/2009 17.49

questo post mi piace molto. Sebbene abbia capito appena il senso.
Secondo me questa è esperienza che si deve memorizzare da qualche parte.
Quindi mi auto-assumo come portavoce ufficiale dei post di luca.
Da dove cominciamo?

PS:sto dicendo sul serio


  

Your comment:

Title:
Name:
Email:
Website:
 
Italic Underline Blockquote Hyperlink
 
 
Please add 5 and 6 and type the answer here: