tdd ist f r tr umer nicht f r praktiker oder
play

TDD ist fr Trumer, nicht fr Praktiker, oder? Sven Amann - PowerPoint PPT Presentation

TDD ist fr Trumer, nicht fr Praktiker, oder? Sven Amann academicscode.com letsdeveloper.com @svamann artwork by Sven Amann - CC BY-SA 4.0 Why TDD (discussions)? Why do I talk about TDD? Sven Amann artwork by Sven Amann - CC BY-SA


  1. TDD ist für Träumer, 
 nicht für Praktiker, oder? Sven Amann academicscode.com letsdeveloper.com @svamann artwork by Sven Amann - CC BY-SA 4.0

  2. Why TDD (discussions)? Why do I talk about TDD? Sven Amann artwork by Sven Amann - CC BY-SA 4.0

  3. Computer Physicist Scientist Academics code artwork by Sven Amann - CC BY-SA 4.0

  4. A Pro artwork by Sven Amann - CC BY-SA 4.0

  5. Introduction to Computer Science I - WS06/07 artwork by Sven Amann - CC BY-SA 4.0

  6. “Faster development, higher code quality, better design, and less waste!” Kent Beck “Self-testing code and clean interfaces!” Martin Fowler “Exhaustive test suites, close to no debugging, changing code without fear, reduced coupling, …” Uncle Bob “Fast feedback and safe refactoring” James Shore

  7. Academics code artwork by Sven Amann - CC BY-SA 4.0

  8. Industry Academic Developer artwork by Sven Amann - CC BY-SA 4.0

  9. Industry Academic Developer artwork by Sven Amann - CC BY-SA 4.0

  10. Industry Academic Developer artwork by Sven Amann - CC BY-SA 4.0

  11. “TDD is dead. Long live testing” DHH “TDD needs a funeral.” Cope “The real "problems" with TDD [is] in the "driven" part, not the "test" part [and] the zealotry of some of its evangelists” Rich Hickey

  12. ?!? artwork by Sven Amann - CC BY-SA 4.0

  13. Agile Alliance TDD 1976: The Dark Age of Developer Testing 
 “a developer should never test their own code” 
 Glenford Myers in “Software Reliability” 1994 - Kent Beck develops SUnit 1999 - Kent says “test first” in “XP Explained” until 2002 - “test first” evolves to “test driven” Source: https://www.agilealliance.org/glossary/tdd/

  14. Queueing Theory Source: http://blog.jbrains.ca/permalink/how-test-driven-development-works-and-more

  15. Test-first Programming Source: http://blog.jbrains.ca/permalink/how-test-driven-development-works-and-more

  16. Uncle Bob’s Three Laws of TDD 1. You are not allowed to write any production code unless it is to make a failing unit test pass. 2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. 3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test. Source: http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd

  17. Classic TDD

  18. Classic TDD Test: 1 = “I” return “I”; Test: 2 = “II” return (i == 1) ? “I” : “II”; Test: 3 = “III” return i * “I”; ...

  19. Classic TDD • Roman Numbers • FizzBuzz • Bowling Game • Game of Life • Harry Potter Book Sets • … Algorithms with well-defined input-output relation

  20. Test! !Test artwork by Sven Amann - CC BY-SA 4.0

  21. “By writing unit tests ... you find all kinds of problems with that code ... of those units [but] unit testing is more of an appraisal activity than a testing one... very few regressions are caught by unit tests since changing the unit of code you’re testing almost always involves changing the unit test itself.” –John Sonmez

  22. Table 3-25, p. 179

  23. Developer Test ≠ Acceptance Test artwork by Sven Amann - CC BY-SA 4.0

  24. self control “a developer should never test their own code” –Glenford Myers artwork by Sven Amann - CC BY-SA 4.0

  25. Developer tests are our job ! artwork by Sven Amann - CC BY-SA 4.0

  26. Valuable Tests Test Test B Test TDD Tests Waste artwork by Sven Amann - CC BY-SA 4.0

  27. Required Functionality Waste All It Can Do artwork by Sven Amann - CC BY-SA 4.0

  28. ??? Toy Project Real Software

  29. Test-driven Programming Source: http://blog.jbrains.ca/permalink/how-test-driven-development-works-and-more

  30. London School TDD

  31. London School TDD Source: http://coding-is-like-cooking.info/tag/london-school-tdd/

  32. Acceptance Test: “Sell One Item” Display Sale ??? Catalog

  33. “TDD was created to replace up-front architecture. It is not a testing technique.” –James O. Coplien (Cope) Source: https://twitter.com/jcoplien/status/828291686128304130

  34. class Person def age Date.today.year - birthday.year end end test “a person’s age is determined by birthday” do seventy_niner = Person.new birthday: Date.new(1979) travel_to Date.new(2009) assert_equal 30, seventy_niner.age end

  35. class Person def age(now = Date.today) now - birthday.year end end test “a person’s age is determined by birthday” do seventy_niner = Person.new birthday: Date.new(1979) assert_equal 30, seventy_niner.age Date.new(2009) end artwork by Sven Amann - CC BY-SA 4.0

  36. First Design , then Code , then Test . That’s how we’ve always done it. All but that… Traditional Waterfall Agile Testing Over-Enthusiast artwork by Sven Amann - CC BY-SA 4.0

  37. “Writing software is more like writing french poetry than a hard science.” –David Heinemeier Hansson (DHH)

  38. The Ultimate Design (You’ll Never Need) artwork by Sven Amann - CC BY-SA 4.0

  39. “TDD doesn't create design. You do.” –Joe Rainsberger (jbrains)

  40. Check Your Own Work Cleanup After Your TDD Listen Closely & Remember To Think Consider the Context

  41. “TDD Is Not Magic. The rules themselves do not guarantee success. You have to keep the brain switched on. You have to pay attention to what’s happening. You need a place to ask questions and get answers. You need to know that when you practise TDD, your code starts to speak to you, but in a language you [may not yet] understand, and that when you write tests and run them, this act equates to learning a language by hearing it, trying to speak it, and by native speakers correcting you. If you do these things, then I expect TDD to “work” for you.” –Joe Rainsberger (jbrains)

  42. Sven Amann academicscode.com letsdeveloper.com youtube.com/letsdeveloper @svamann artwork by Sven Amann - CC BY-SA 4.0

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend