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
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
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
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