Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Linux Day 20091024 Test Driven Development

610 views

Published on

Published in: Technology, Business
  • Be the first to comment

Linux Day 20091024 Test Driven Development

  1. 1. Breve introduzione al Test Driven Development Roberto Albertini [email_address] http://www.sourcesense.it/it/agile/team http://www.xpug.it http://www.lugcr.it http://www.linuxday.it
  2. 2. Test Driven Development “ Write new code only if an automated test has failed ” Kent Beck
  3. 3. Test Driven Development “ Only ever write code to fix a failing test ” Lasse Koskela
  4. 4. Test Driven Development “ we produce well-designed, well-tested, and well-factored code in small, verifiable steps ” James Shore
  5. 5. i passi del TDD RED GREEN REFACTOR Write a test Make it run Make it right Test Code Design passi piccoli, incrementali, automatizzati
  6. 6. W rite a test: RED Scrivi un piccolo unit test che non passa o non compila il test racconta una funzionalità oppure dimostra un baco
  7. 7. cos'è uno Unit Test è un Test codice che verifica il funzionamento di altro codice è Unitario di una sola “unità” di codice senza interazioni con altre “unità” o sistemi esterni
  8. 8. un buon test è automatizzato e ripetibile un solo click per lanciare tutti i test l'output è consistente output semplice: verde o rosso verifica da solo l'output output “verboso” solo quando è ross o
  9. 9. Make it run: GREEN scrivi una semplice implementazione che faccia passare il test L’implementazione deve essere la soluzione più rapida e semplice , anche banale. l’obiettivo è avere i test verdi il prima possibile.
  10. 10. Make it right: REFACTOR elimina gli smell migliora il design Questa è l'attività che prende la maggior parte del tempo. Si fa refactor sia del codice di produzione sia del codice di test.
  11. 11. Refactor “ Eliminate all of the duplication created in merely getting the test to work ” Kent Beck
  12. 12. Refactor “ ...is about transforming the current design toward a better design ” Lasse Koskela
  13. 13. Cos'è il Refactoring? “ Is the process of changing a software system in such a way that it does not alter the external behaviour of the code yet improves its internal structure ” Martin Fowler
  14. 14. Cos'è il Refactoring? migliorare il design del codice esistente senza correre rischi riscivere il codice non è fare refactoring esempio di alcuni passi: Extract method, Move method, Inline method, Extract Class, Introduce Parametr Object, Replace temp with query, Replace conditional with polymorphism
  15. 15. Cos'è il Refactoring? miglioramenti a piccoli passi senza “rompere” l'esistente riscivere il codice non è fare refactoring aggiungere/modificare funzionalità non è fare refactoring esempio di alcuni passi: Extract method, Move method, Inline method, Extract Class, Introduce Parametr Object, Replace temp with query, Replace conditional with polymorphism
  16. 16. Cosa sono i code smell? sintomi e indizi di qualcosa che “non va” nel codice esempio di alcuni smell duplicazioni, magic number, comenti sospetti, metodi lunghi, feautre envy, lunghe liste di parametri, inappropriate intimacy, message chain, data clump
  17. 17. Test Driven Development RED GREEN REFACTOR Write a test Make it run Make it right Test Code Design Ripetere ogni pochi minuti
  18. 18. Test Driven Development RED GREEN REFACTOR Ogni 2-10 minuti
  19. 19. Test Driven Development è uno stile di sviluppo è una attività di design non è una attività di testing codice testabile decisioni di design poco alla volta prospettiva corretta nel disegnare le api focus sull'obiettivo
  20. 20. i Test non sono lo scopo sono lo strumento pongono nella corretta prospettiva aiutano a scomporre i problemi e isolarli aiutano a individuare gli errori con cicli brevi di feedback e sono un utile prodotto “di scarto” rimangono come rete di sicurezza efficacie e duratura
  21. 21. un esempio
  22. 22. Punteggio del Bowling
  23. 23. Frame in una partita si giocano 10 frame in ogni frame si hanno a disposizione 2 tiri per abbattere i 10 birilli
  24. 24. Punti in un Frame in ogni frame si prende un punto per ogni birillo abbattuto Esempi 0+0 = segna 0 punti 6+3 = segna 9 punti 3+1 = segna 4 punti
  25. 25. Frame con Spare se in un frame con i due si abbattono tutti i 10 birilli si prende un punto bonus per ogni birillo abbattuto nel tiro successivo Esempi Tiro 1 e 9 seguito da 3 e 4 -> 13 punti seguiti da 7 punti Tiro 6 e 4 seguito da 4 e 0 -> 14 punti seguiti da 4 punti Tiro 6 e 4 seguito da 0 e 4 -> 10 punti seguiti da 4 punti
  26. 26. Frame con Strike se in un frame con il primo tiro si abbattono tutti i 10 birilli non si fa il secondo tiro e si riceve un punto bonus per ogni birillo abbattuto nei due tiri successivi Esempi Tiro 10, poi 3 e 4 -> 17 punti, poi 7 punti Tiro 10, poi 0 e 4 -> 14 punti, poi 4 punti Tiro 10, poi 10, poi 2+3 -> 22 punti, poi 15 punti, poi 5 punti
  27. 27. Ultimo frame se all'ultimo frame ottengo uno spare o uno strike faccio i tiri necessari ad ottenere i bonus Esempio All'ultimo frame tiro 3+7, tiro bonus 4 -> 14 punti All'ultimo frame tiro 10, tiri bonus 3 e 4 -> 17 punti All'ultimo frame tiro 10, tiri bonus 10 e 10 -> 30 punti
  28. 28. kata http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata

×