Your SlideShare is downloading. ×
0
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Test Driven Development
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Test Driven Development

1,694

Published on

het hoe, wat en waarom van Test Driven Development

het hoe, wat en waarom van Test Driven Development

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,694
On Slideshare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Red IS ECHT NODIG! Hoe vaak zie tests die nooit falen? Dit garandeert dat je echt iets test.
  • LET OP: dit is in dit geval het design dat ik voor deze belachelijk kleine feature moet doen. In de praktijk is veel meer nodig!
  • Testttool is belangrijk, 1 plek waar alle tests gerund worden en iedereen kan ze op dezelfde manier runnen
  • Transcript

    • 1. Test Driven Development hoe en waarom van een test driven aanpak van software development
    • 2. Roelof Reitsma teamleider Coconut development team (@OGD) interesses: - Agile development (Scrum) - webdevelopment (Ruby on Rails) - geautomatiseerd testen
    • 3. inhoud
        • waarom automated testing?
        • wat is test driven development?
        • waarom test driven development?
        • praktijkvoorbeeld: chatten met een gebruiker
        • randvoorwaarden
        • interessante urls & literatuur
    • 4.
        • waarom automated testing?
        • wat is test driven development?
        • waarom test driven development?
        • praktijkvoorbeeld: chatten met een gebruiker
        • randvoorwaarden
        • interessante urls & literatuur
    • 5. waarom automated tests?
        • aantonen dat code het juiste resultaat geeft
        • handmatig testen kost teveel tijd
        • betrouwbare systemen
        • eenvoudiger wijzigingen maken 
        • voorkomen van regressie
          • tests zijn ons vangnet 
          • maakt refactoring mogelijk
    • 6. We value code that is easy to maintain over code that is easy to write Steve Freeman / Nathan Price
    • 7. dus wat willen we?
      • code die
      •  
        • goed onderhoudbaar is
        • makkelijk aan te passen
        • leesbaar is
        • duidelijk in wat het doet
        • zo klein mogelijk is
    • 8. Doel van test driven development: clean code that works
    • 9. waarom clean code?
        • veel makkelijker onderhoudbaar
          • je collega's zullen je dankbaar zijn
        • minder code betekent minder onderhoud
        • het is fijn om te schrijven
    • 10.
        • waarom automated testing?
        • wat is test driven development?
        • waarom test driven development?
        • praktijkvoorbeeld: chatten met een gebruiker
        • randvoorwaarden
        • interessante urls & literatuur
    • 11. wat is test driven development?
      • simpel idee: schrijf eerst je tests, daarna de code
      • test als design instrument voor developers  
      • om features te leren begrijpen en analyseren
      • het maakt de manier waarop je software ontwikkelt radicaal anders
    • 12. TDD Mantra:   Red, green, refactor
    • 13. wat is test driven development?
        • alleen nieuwe code toevoegen als een test faalt
        • daarna refactoring:
          • duplicatie verwijderen
          • slechte naamgeving verbeteren
        • incrementeel, stap voor stap design
    • 14.
        • waarom automated testing?
        • wat is test driven development?
        • waarom test driven development?
        • praktijkvoorbeeld: chatten met een gebruiker
        • randvoorwaarden
        • interessante urls & literatuur
    • 15. waarom test first?
        • omdat test-last niet werkt
          • je hebt geen zin meer
          • je hebt geen tijd meer
          • code blijkt lastig te testen
          • er is iets veel belangrijkers te doen (?)
    • 16. waarom test driven?
        • complexe features of omgevingen
          • venturing into unknown territory
        • focus - 'scope creep' voorkomen
          • eerst weten wat je wilt bereiken
          • stoppen als je dat bereikt hebt
        • beperken afhankelijkheid en samenhang code 
        • ritme - continu naar een doel werken
    • 17. Developers should be having fun! Jeff Sutherland
    • 18. inhoud
        • waarom automated testing?
        • wat is test driven development?
        • waarom test driven development?
        • praktijkvoorbeeld: chatten met een gebruiker
        • randvoorwaarden
        • interessante urls & literatuur
    • 19. Chatten met een gebruiker Product owner: ik wil kunnen chatten met een andere gebruiker
    • 20. Chatten met een gebruiker
      • Als gebruiker wil ik met een andere gebruiker kunnen chatten, zodat ik snel en eenvoudig kennis en informatie kan delen
      userstory voor de chatfunctie
    • 21. Chatten met een gebruiker grafisch ontwerp chatfunctie
    • 22. Chatten met een gebruiker
      • Acceptatietest chatfunctie mbv Cucumber features
      • ( zie voor meer info: http://cukes.info/ )
    • 23. Chatten met een gebruiker
      • eerste schets model voor chatfunctie
    • 24. Chatten met een gebruiker
      • begin bij het model (de backend) en schrijf de eerste test
    • 25. Chatten met een gebruiker
      • RED:
      • de test faalt met een NameError: de klasse Conversation bestaat nog niet!
    • 26. Chatten met een gebruiker
      • RED: er wordt nog steeds geen nieuwe conversatie aangemaakt!
    • 27. Chatten met een gebruiker
      • GREEN:
      • de test slaagt met minimale effort
    • 28.  
    • 29. Chatten met een gebruiker REFACTOR: nog heel weinig om te refactoren, maar we hebben nu een conversatie zonder gebruikers! Nog maar een test:
    • 30. Chatten met een gebruiker
      • RED:
      • nu heb ik weer een falende test, omdat de start functie nu een argument meekrijgt
    • 31. Chatten met een gebruiker
      • GREEN:
      • code en test weer in orde. Hoewel....
    • 32. Chatten met een gebruiker
      • REFACTOR:
      • de duplicate code verwijderen
    • 33. Chatten met een gebruiker
      • REFACTOR:
      • de naamgeving verbeteren (started_by vind ik beter)
    • 34. Chatten met een gebruiker
      • REFACTOR:
      • starter veranderd in started_by, tests uitvoeren en gelukkig: groen licht
    • 35. Hoe verder?
        • stap voor stap, bijvoorbeeld: hoe koppel je de andere gebruiker aan de conversatie? 
        • werk omhoog door de verschillende lagen
        • ga door tot je de eerste acceptatietest kunt laten slagen en STOP
      •  
        • naar de volgende feature, in dit voorbeeld: berichten sturen
        • belangrijk: blijf refactoren! denk aan 'clean code that works'
    • 36.
        • waarom automated testing?
        • wat is test driven development?
        • waarom test driven development?
        • praktijkvoorbeeld: chatten met een gebruiker
        • randvoorwaarden
        • interessante urls & literatuur
    • 37. wat heb ik nodig om te beginnen?
        • kies een testtool
        • een definitie van DONE
        • snelle feedback (Continuous Integration)
        • kennis van OOP, refactoring, patterns
        • maar je kunt NU al beginnen!
          • test drive een bugfix
          • test drive een modelfunctie
          • test drive een javascript methode
          • etcetera...
    • 38. Vandaag is een mooie dag om het anders te gaan doen Roelof Reitsma
    • 39.
        • waarom automated testing?
        • wat is test driven development?
        • waarom test driven development?
        • praktijkvoorbeeld: chatten met een gebruiker
        • randvoorwaarden
        • interessante urls & literatuur
    • 40. Wat handige URL's
      • Testing frameworks:
        • Jasmine (javascript): http://pivotal.github.com/jasmine/
        • NUnit (.NET): http://www.nunit.org/
        • Moq (.NET, mocks & stubs): http://code.google.com/p/moq/
        • PHPUnit (PHP): http://phpunit.sourceforge.net/
        • Fitnesse (acceptance testing): http://fitnesse.org/
        • Specflow (acceptance testing, .NET): http://www.specflow.org/
        • Cuke4PHP (acceptance testing): https://github.com/olbrich/cuke4php
      • Continuous integration:
        • Teamcity: http://www.jetbrains.com/teamcity/
        • Jenkins CI: http://jenkins-ci.org/
        • Cruise Control: http://cruisecontrol.sourceforge.net/
    • 41. Test driven development by example - Kent Beck
    • 42. xUnit Test Patterns - Gerard Meszaros
    • 43. Growing object-oriented software - Steve Freeman / Nat Pryce
    • 44. Working effectively with legacy code - Michael Feathers
    • 45. Tot slot
      • Download presentatie: 
      • http://ryreitsma.blogspot.com
      •  
      • Vragen?

    ×