A Taste of TDD: Basic overview of Agile Testing, TDD in practice, Pros/Cons of Test Driven Development, Recent TDD Controversey (DHH, Kent Beck, Martin Fowler), and some strategies for doing it well.
This is a lead in to a full Agile Workshop on Scrum/XP, TDD, and Pairing
%in Midrand+277-882-255-28 abortion pills for sale in midrand
A Taste of TDD: The basics of TDD, why it is hard and how to do it better
1. TESTING AND TDD
John McCaffrey
@ J_McCaffrey
Wednesday, October 29, 14
2. AGENDA
• Poll: What are your current testing practices?
•What is TDD?
•Where does it fit in the Agile landscape
• TDD basics
• Pros/Cons/Controversy
• Demo/Q&A
Wednesday, October 29, 14
3. ME
• Started Unit testing in Java
• TDD Javascript & Ruby
• Love Testing and TDD
Wednesday, October 29, 14
4. YOU
•What are you doing already?
•What are you hoping to learn?
Wednesday, October 29, 14
6. TDD DEFINED
• Software Development practice
• Focus on explicit expectations from tests
• Characterized by red/green/refactor
Wednesday, October 29, 14
8. TDD BENEFITS
• Correct behavior
• Rapid feedback
• Simpler, easier to understand
• Fully covered by tests
• Living documentation
• Confidence
Wednesday, October 29, 14
9. TDD == GTD?
• Collect
• Process
• Organize
• Review
• Do it
Wednesday, October 29, 14
10. • not just testing in general
• more of a design practice
with test benefits
• TDD is not a silver-bullet!
Wednesday, October 29, 14
11. WHAT WE WILL COVER
•Where Testing and TDD fit in Agile
• General Agile Testing practices
• TDD Practice
• Pros/Cons/Controversy
• Demo/Q&A
Wednesday, October 29, 14
14. DOES OUR CODE...
• function correctly?
• handle expected edge cases and exceptions?
• allow for new features and change?
• make sense to new team members?
Wednesday, October 29, 14
15. MO’ PROBLEMS
• Code changes create new bugs
• Fear of changing anything leads to worse code
• Estimates are higher, changes take longer
• Bugs, Bugs, Bugs, regression, Bugs, Bugs
• Time between build to feedback is too long
Wednesday, October 29, 14
16. WITH TESTS
• Code change is safer
• Component design is clearer
• Feedback is quicker
• Safety and freedom to make the code better
Wednesday, October 29, 14
17. TESTS ARE FOR EVERYONE
• Managers and Business team
• QA Team
• Support
• dev ops
• Customers
Wednesday, October 29, 14
18. TESTING TYPES
• Unit
• Functional
• Integration/system testing
• User acceptance
• Manual testing
Wednesday, October 29, 14
20. TDD APPLIED
• You can use TDD and Test-First with all types of testing
• TDD helps you focus on your specific task
• TDD may be challenging for some types of testing
Wednesday, October 29, 14
21. TESTING & TDD
IN THE
AGILE LANDSCAPE
Wednesday, October 29, 14
25. XP PRACTICES
• Planning Game
• On-site Customer
• Small Releases
• Simple design
• Customer Testing
• Metaphor
• Sustainable pace (40hr)
• Common Standards
• Collective Ownership
• Unit Testing
• Refactoring
• Continuous Integration
• Pair Programming
Wednesday, October 29, 14
26. XP PRACTICES
• Planning Game
• On-site Customer
• Small Releases
• Simple design
• Customer Testing
• Metaphor
• Sustainable pace (40hr)
• Common Standards
• Collective Ownership
• Unit Testing
• Refactoring
• Continuous Integration
• Pair Programming
Wednesday, October 29, 14
27. TDD FEEDBACK CYCLE
• Code is correct
• Design is workable
• Intention is clear
• Dependencies and collaborators are minimal
• It does what the Developer intended....
Wednesday, October 29, 14
28. IF YOU ONLY GET ONE THING
OUT OF THIS...
Wednesday, October 29, 14
30. IF YOU ONLY GET ONE THING OUT
OF THIS...
• Define acceptance test criteria as team, as part of the story
definition
• write out the test steps
• plan to automate them
• update with any test cases that are discovered
Wednesday, October 29, 14
31. TDD WON’T FIX BAD
REQUIREMENTS!!
Wednesday, October 29, 14
36. TDD WORKFLOW
• write the test, watch it fail
• write “just enough” code to make it pass
• rinse/repeat, improving the tests and code as you go
Wednesday, October 29, 14
37. SIMPLE DESIGN
• Passes all the tests
• Minimal Duplication
• Maximizes clarity
• Fewest number of classes or methods
Wednesday, October 29, 14
38. SIMPLE DESIGN
• Low Coupling
• High Cohesion
• High Encapsulation
• SOLID
Wednesday, October 29, 14
39. TDD WORKFLOW
• New code
• Legacy
• Bugs
Wednesday, October 29, 14
41. STORY SAMPLE
• As a Standard User I need to see my list of
outstanding orders, so I can review and
complete them in priority order
Wednesday, October 29, 14
42. STORY SAMPLE
• As a Standard User I need to see my list of
outstanding orders, so I can review and
complete them in priority order
Wednesday, October 29, 14
43. STORY SAMPLE
• As a Customer I need to calculate the tip for
my bill, so I can save time and include a
reasonable amount
Wednesday, October 29, 14
47. LEGACY
• first, do no harm
• get sufficient coverage in place
• confirm existing functionality is correct
• review tests cases with team
Wednesday, October 29, 14
53. CONS
• TDD is HARD!!
• Refactoring is an uncertain art
• Some parts are hard to test first
• False sense of security
• Focus more on the tests than the system!
Wednesday, October 29, 14
54. ANTI-PATT3RNS
• huge setup, reused unnecessarily
• too much going on in one test
• only testing happy-path, not exceptions
• too much boiler-plate, basic tests
• over-mocking: “tests pass, but production is broken”
• not doing the ‘refactor’ part of Red/Green/Refactor
Wednesday, October 29, 14
57. CONTROVERSY
• Used to love and promote TDD
• Dogmatic TDD is not helpful
• Focusing exclusively on speed and low-coupling
• Shaming others for not following “TDD or Die!”
Wednesday, October 29, 14
58. SUMMARY
• Tests are worth the investment
• Everyone on the team should care about them
• TDD is a great way to improve your code and tests
• Find an approach that works best for your team
Wednesday, October 29, 14
59. RESOURCES
• TDD is Dead - David Heinemeier-Hansson
• R.I.P. TDD - Kent Beck
• TDD “straw-men and rhetoric” - Gary Bernhardt
• Failures of “Intro to TDD” - Justin Searls
• Pragmatics of TDD - ‘Uncle’ Bob Martin
• When to Mock - ‘Uncle’ Bob Martin
• TDD Failed to become mainstream
• TDD a Love-Story - Nell Shamrell
Wednesday, October 29, 14
60. LET’S HAVE SOME
QUESTIONS!
John McCaffrey
@ J_McCaffrey
Wednesday, October 29, 14