(A)TDD The what, why and how

  • 135 views
Uploaded on

Discusses Acceptance Test Driven Development and Behavior Driven Development with Specflow.

Discusses Acceptance Test Driven Development and Behavior Driven Development with Specflow.

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
135
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
0

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
  •  ATDD is a practice that emphasizes the importance of open communication and feedback within the teamIt focuses on progressively driving value out of the system, demonstrating how that value is delivered via automated acceptance criteria
  • Given I have entered the following personsAnd the adult price is <AdultPrice> and the price for children is <ChildrenPrice>When I press calculateThen the total tick price should be <TotalPrice>
  • Begun in 1999, introduced with XPWie heeft er weleens een unit test geschreven?Wie schrijft regelmatig unit testen in zijn huidige projectWie practiseert TDD (unit test voor implementatie schrijven)?Je bent een deskundige ontwikkelaar, je maakt weinig fouten en de klant is tevreden. Waarom zou je dan extra moeite nemen om extra code voor unit testen te gaan schrijven?Leidt tot beter design (dependencyinjection, single responsibility SOLID (wanneer je objecten eenvoudig te unit testen zijn zonder veel afhankelijkheden te moeten mocken/declareren) is je testdoelobject mooi geisoleerd denk aan Program klasse unit tests vergeleken met modelagent unit tests. Toon Program klasse en ProgramAgent klasse en laat zien dat er geen unit tests nodig zijn voor ProgramAgent)80% van de kosten gaan in onderhoud zitten. Met unit testen is de code beter aanpasbaar, voor jou maar helemaal voor toekomstige ontwikkelaars.Kwaliteit neemt toe, ook de edge cases kun je makkelijk testenRegressietestenondersteuning voor refactoringbest practiceswanneerereen defect wordtgevonden door een tester of gebruiker, schrijfdaneen unit test om het scenario tereproducerenfailing test, succeeding test, refactoralleenpubliekemethodentesten, consider moving the method to a separate classpitfalls* mock alleenklassen met eenafhankelijkheidnaareenexterne resource zoals repositories, file loaders, service agents. Nietklasses met logicazoals Calculators
  • var result = 10/Math.Floor(0.5);mighty moosefluent assertionsmoq / nsubstitute /rhinomock / microsoft fakes ultimate question of life

Transcript

  • 1. ATDD, BDD, TDD Alexander van Trijffel 18-09-2013 The what, why and how
  • 2. INTRODUCTION • Behavior Driven Development & Acceptance Test Driven Development • Building the Right Code • Test Driven Development • Building the Code Right
  • 3. ACCEPTANCE TEST DRIVEN DEVELOPMENT • What • Process for defining automated acceptance tests early in the development process • Why • Ensure that all project members understand precisely what needs to be done and implemented • How • Tools: Specflow (.NET), Jasmine (JavaScript), Cucumber (Ruby), Fitnesse+FitSharp
  • 4. BEHAVIOR-DRIVEN DEVELOPMENT • What • Framework for defining automated acceptance tests to assert whether the system does what it is supposed to do (is the expected functionality implemented?) Given [condition], when [action], then [expectation] • Why • Provides guidance on organizing the conversation between developers, testers and domain experts
  • 5. SPECFLOW • Tester, business analyst and developer discuss requirements and write feature with Given [ ], When [ ], Then [ ] specification • Developer writes step definitions (glue code) that act on the target system • Tests are executed similar to unit tests
  • 6. DEMO SPECFLOW
  • 7. CASE MOVIE TICKETING SYSTEM • Stories • As an employee, I want to add groups of visitors so that ticket prices can be calculated • As an employee, I want to calculate total ticket prices for groups so that I can charge the customer • Ticket prices Adult Children € 8,-- €5,--
  • 8. TEST DRIVEN DEVELOPMENT • What • Writing automated tests to test whether code works correctly • Why • Improves code quality • Automated regression tests support refactoring • How • TDD Cycle: • a) Write executable, failing test • b) Write minimum amount of code to make the test pass • c) Refactor
  • 9. DEMO SPECFLOW
  • 10. THANKS