Fe05 test drivenjavascriptdevelopment

179 views
103 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
179
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Fe05 test drivenjavascriptdevelopment

  1. 1. Template designed by T.D.J.D.: Test Driven Javascript Development Antonio Turibbio Liccardi antonio.liccardi@dotnetcampania.org www.dotnetcampania.org/blogs/turibbio www.getlatestversion.it Template designed by
  2. 2. Template designed by brought to you by
  3. 3. Template designed by Chi sono getlatestversion.it
  4. 4. Template designed by Unit Testing, TDD e TDJD Qunit Metriche Automazione Considerazioni Agenda
  5. 5. Template designed by Il motivo principale per scrivere unit test è il dimostrare la correttezza di una funzionalità A cosa serve lo unit testing?
  6. 6. Template designed by Ma scrivere unit test non sempre implica direttamente che il nostro codice sia migliore! A cosa serve lo unit testing?
  7. 7. Template designed by Ci può aiutare però a renderlo più testabile, pulito, riutilizzabile A cosa serve lo unit testing?
  8. 8. Template designed by Scritti dagli sviluppatori Isolamento Atomici Costituiscono una documentazione vivente Facilitano la gestione della anomalie (regression) Automazione Caratteristiche dello unit testing
  9. 9. Template designed by Svantaggi: E’ un processo costoso Richiede tempo, pazienza e soprattutto bravura
  10. 10. Javascript Testing perché?
  11. 11. Template designed by Alert UAT Debug Come testiamo il nostro javascript?
  12. 12. Template designed by Come testiamo il nostro javascript?
  13. 13. Template designed by Come testiamo il nostro javascript Richiede tempo Conduce ad errori Non riproducibile
  14. 14. Template designed by Cross-browser testing
  15. 15. Template designed by E quindi? Lo unit test ci fa bene… …soprattutto se lo facciamo nel modo giusto
  16. 16. Template designed by Test Driven Development
  17. 17. Template designed by «no big design up front» Test Driven Development
  18. 18. Template designed by Think Write a test Run the test Make the test pass Refactor Come funziona?
  19. 19. Template designed by You ain’t gonna need it! (YAGNI) Don’t repeat yourself (DRY) Descriptive and Meaningful Phrases (DAMP) SOLID Refactoring Certain structures in code suggest (sometimes they scream for) the possibility of refactoring Martin Fowler
  20. 20. Template designed by Organizzare un test Fixture Test Case Check
  21. 21. Template designed by Organizzare unit test AAA • Arrange • Act • Assert BDD • Given • When • Then 4 Phase • Setup • Exercise • Verify • Teardown
  22. 22. Template designed by Come funzionano? Unit Test Framework Unit Test Runner Unit Test Codice Risultati
  23. 23. Template designed by Nasce dall’idea degli xUnit Frameworks E’ stato realizzato dal team da John Resig Può testare codice server side js Cosa è QUnit https://github.com/jquery/qunit
  24. 24. Template designed by Test Runner Assertions In-Browser Testing Plugin QUnit
  25. 25. demo Qunit
  26. 26. Template designed by Pete Hodgson http://bit.ly/19wDtTp Martin Fowler http://bit.ly/1hDeP1O Segregated DOM
  27. 27. Template designed by Test doubles
  28. 28. Template designed by Dummy Fake Stub Spy Mock Test doubles
  29. 29. Template designed by Test doubles nella vita reale State Verification Behavior Verification Mocks aren’t stubs! (Fowler: http://bit.ly/18BPLE1)
  30. 30. Template designed by Sinon.js Spies Stubs Mocks Fake Timers Fake XHR Fake server JSON-P Assertions Matchers Sandboxing
  31. 31. demo Sinon.js
  32. 32. Template designed by In-Browser testing vs Headless Testing
  33. 33. Template designed by JSTestDriver
  34. 34. Template designed by TestSwarm
  35. 35. demo phantomJS
  36. 36. Template designed by E’ una percentuale che indica il numero di unit test correlati ai metodi del nostro codice Code coverage
  37. 37. demo blanket.js
  38. 38. Template designed by Come automatizzare i nostri test? Continuous integration
  39. 39. demo chutzpah
  40. 40. Template designed by Logica UI != Logica applicativa Evitare singleton Scrivere metodi piccoli Testare i casi limite Isolare dall’esterno Suddividere logicamente il proprio codice Come scrivere test
  41. 41. Template designed by Riferimenti
  42. 42. Template designed by Grazie!

×