SlideShare a Scribd company logo
Test Driven
Development (TDD)
Ganesh Samarthyam
ganesh@codeops.tech
Entrepreneur,
Conference Speaker/Organizer
& Author
Test
Driven
Development
All code is guilty unless
proven innocent!
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
Touch the code, whole thing breaks!
Make the change easy
A Not-So-Serious Introduction to Test Driven Development (TDD)
Grow your software, guided by tests
Source: Growing Object-Oriented Software, Guided by Tests, Steve Freeman, Nat Pryce, Addison Wesley, 2009
TDD & Unit Testing => Confident change
Check Before You Leap:
Test Driven Development!
Old school approach
Design Code Test
New school approach
Design Test Code
TDD inverts the conventional approach!
And it still works!
What exactly is this TDD thingy?
❖ Test-Driven Development (TDD) is a technique for
building software that guides software development by
writing tests. (Martin Fowler’s definition)
TDD? But I already write unit tests!
Pants == TDD
Shoes == Unit tests!
TDD is mainly about design!
❖ “Test Driven Development” is NOT primarily about
testing or development (i.e., coding)
Who writes unit tests?
❖ Developers write unit tests (NOT testers) and then code
TDD mantra
Green
Red
Refactor
failing test(s)
passing test(s)
Step 1: Write test that fails
❖ Red—write a little test that doesn’t work, perhaps
doesn’t even compile at first
Source: Test Driven Development: By Example, Kent Beck, 240 pages, Addison-Wesley Professional, 2002;
Step 2: Get code working to pass test
❖ Green—make the test work quickly, committing
whatever sins necessary in the process
Source: Test Driven Development: By Example, Kent Beck, 240 pages, Addison-Wesley Professional, 2002;
Step 3: Cleanup and refactor
❖ Refactor—eliminate all the duplication and smells created
in just getting the test to work
Source: Test Driven Development: By Example, Kent Beck, 240 pages, Addison-Wesley Professional, 2002;
Always
remember this
But where is time to refactor?
A Not-So-Serious Introduction to Test Driven Development (TDD)
Unit Testing
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
Of
TDD
Newton’s first law of testto dynamics: You may not write production
code unless you’ve first written a failing unit test.
Source: Professionalism and Test-Driven Development, Robert C. Martin, IEEE Software, 2007
Newton’s second law of testto dynamics: You may not write more of a
unit test than is sufficient to fail.
Source: Professionalism and Test-Driven Development, Robert C. Martin, IEEE Software, 2007
Newton’s third law of testto dynamics: You may not write more
production code than is sufficient to make the failing unit test pass.
Source: Professionalism and Test-Driven Development, Robert C. Martin, IEEE Software, 2007
A Not-So-Serious Introduction to Test Driven Development (TDD)
TDD is powerful
Without TDD
With TDD
TDD slows down development?
Is TDD
slowing me
down in
coding?
TDD slows down development?
Lies, damn lies, and assertions
A Not-So-Serious Introduction to Test Driven Development (TDD)
Misunderstanding TDD => trouble
Start TDD now (before its too late!)
Let the fun begin!
Image credits
❖ https://s-media-cache-ak0.pinimg.com/736x/78/c9/9e/78c99e530a69406ec249588ef87a59a9.jpg
❖ http://www.datamation.com/imagesvr_ce/4130/development-driven.jpg
❖ https://s-media-cache-ak0.pinimg.com/736x/ae/22/01/ae2201013b69918a20b6de0adf1517a1.jpg
❖ http://blog.itexus.com/img/tdd_comics.png
❖ https://martinfowler.com/articles/preparatory-refactoring-example/jessitron.png
❖ https://i2.wp.com/www.gilzilberfeld.com/wp-content/uploads/2011/02/regret-testing.png
❖ https://pixabay.com/en/pegasus-horse-winged-mythology-586124/
❖ https://pixabay.com/en/horse-gallop-horses-standard-1401914/
❖ https://refactoring.guru/images/content-public/index-clean-code.png
❖ http://www.lifeisanecho.com/wp-content/uploads/2016/06/ar131070344825846.jpg
❖ https://pixabay.com/en/ball-chain-bug-jail-insect-46207/
❖ https://pixabay.com/en/home-old-school-old-old-building-1824815/
❖ https://pixabay.com/en/escalator-stairs-metal-segments-283448/
❖ https://devops.com/wp-content/uploads/2016/07/tdd-01-1.jpg
❖ http://www.nanrussell.com/wp-content/uploads/2015/08/Not-me.jpg
❖ https://cdn.meme.am/instances/500x/43446748/winter-is-coming-brace-yourselves-endless-client-revisions-are-coming.jpg
❖ https://t4.ftcdn.net/jpg/00/87/17/55/240_F_87175567_I7FK0h2XNxrwtnoYbufTzvpLv3p2cFrk.jpg
❖ https://cdn.meme.am/cache/instances/folder518/500x/64808518/yeah-if-you-could-just-if-we-could-stop-changing-requirements-every-5-minutes-that-would-be-great.jpg
Image credits
❖ http://optymyze.com/blog/wp-content/uploads/sites/2/2017/02/change.jpg
❖ http://bookboon.com/blog/wp-content/uploads/2014/03/D%C3%A9veloppez-votre-potentiel.jpg
❖ https://techbeacon.com/sites/default/files/most_interesting_man_test_in_production_meme.jpg
❖ https://cdn-images-1.medium.com/max/490/1*k-OkcZd2fAyZf1WBkharGA.jpeg
❖ https://akchrish23.files.wordpress.com/2012/12/far-side-first-pants-then-your-shoes.jpg
❖ https://image.slidesharecdn.com/its-all-about-design-1232847245981881-1/95/its-all-about-design-10-728.jpg?cb=1232825731
❖ http://www.fox1023.com/wp-content/uploads/2016/06/fail-sign1.jpg
❖ https://vgarmada.files.wordpress.com/2012/04/pass-sign.jpg
❖ http://codelikethis.com/lessons/agile_development/make-it-green.png
❖ https://refactoring.guru/images/content-public/index-refactoring-how.png
❖ http://geek-and-poke.com/geekandpoke/2014/1/15/philosophising-geeks
❖ https://employmentdiscrimination.foxrothschild.com/wp-content/uploads/sites/18/2014/06/20350757_s.jpg
❖ https://static1.squarespace.com/static/5783a7e19de4bb11478ae2d8/t/5821d2ea09e1c46748737af1/1478614300894/shutterstock_217082875-e1459952801830.jpg
❖ https://lh3.googleusercontent.com/-eM1_28qE1cM/U1bUFmBU1NI/AAAAAAAAHEk/ZqLcxFEhMuA/w530-h398-p/slide-32-638.jpg
❖ http://www.trainingforwarriors.com/wp-content/uploads/2015/03/3-Laws-Post.jpg
Image credits
❖ https://patientsrising.org/sites/default/files/Step%20Therapy.PNG
❖ https://1.bp.blogspot.com/-Q00OoZelCic/WFSmGIUCrGI/AAAAAAAAx5U/i59y1h-
czIIXNswq6aMdAOUGjgPLaPdxACLcB/s1600/awful.png
❖ http://s2.quickmeme.com/img/f4/f4b4744206cf737305f1a4619fefde7b0df54ecc0dc012adcceaadf93196a7e8.jpg
❖ https://pbs.twimg.com/media/CeZu1YjUsAEfhcP.jpg:large
❖ https://upload.wikimedia.org/wikipedia/en/thumb/f/ff/Poison_Help.svg/1024px-Poison_Help.svg.png
❖ http://data.whicdn.com/images/207820816/large.jpg
❖ http://orig04.deviantart.net/c7cb/f/2014/171/d/a/the_bare_minimum_bandits_by_shy_waifu-d7n8813.png
ganesh@codeops.tech @GSamarthyam
www.codeops.tech slideshare.net/sgganesh
+91 98801 64463 bit.ly/sgganesh

More Related Content

A Not-So-Serious Introduction to Test Driven Development (TDD)

  • 1. Test Driven Development (TDD) Ganesh Samarthyam ganesh@codeops.tech Entrepreneur, Conference Speaker/Organizer & Author Test Driven Development
  • 2. All code is guilty unless proven innocent!
  • 5. Touch the code, whole thing breaks!
  • 8. Grow your software, guided by tests Source: Growing Object-Oriented Software, Guided by Tests, Steve Freeman, Nat Pryce, Addison Wesley, 2009
  • 9. TDD & Unit Testing => Confident change
  • 10. Check Before You Leap: Test Driven Development!
  • 13. TDD inverts the conventional approach! And it still works!
  • 14. What exactly is this TDD thingy? ❖ Test-Driven Development (TDD) is a technique for building software that guides software development by writing tests. (Martin Fowler’s definition)
  • 15. TDD? But I already write unit tests! Pants == TDD Shoes == Unit tests!
  • 16. TDD is mainly about design! ❖ “Test Driven Development” is NOT primarily about testing or development (i.e., coding)
  • 17. Who writes unit tests? ❖ Developers write unit tests (NOT testers) and then code
  • 19. Step 1: Write test that fails ❖ Red—write a little test that doesn’t work, perhaps doesn’t even compile at first Source: Test Driven Development: By Example, Kent Beck, 240 pages, Addison-Wesley Professional, 2002;
  • 20. Step 2: Get code working to pass test ❖ Green—make the test work quickly, committing whatever sins necessary in the process Source: Test Driven Development: By Example, Kent Beck, 240 pages, Addison-Wesley Professional, 2002;
  • 21. Step 3: Cleanup and refactor ❖ Refactor—eliminate all the duplication and smells created in just getting the test to work Source: Test Driven Development: By Example, Kent Beck, 240 pages, Addison-Wesley Professional, 2002;
  • 23. But where is time to refactor?
  • 32. Newton’s first law of testto dynamics: You may not write production code unless you’ve first written a failing unit test. Source: Professionalism and Test-Driven Development, Robert C. Martin, IEEE Software, 2007
  • 33. Newton’s second law of testto dynamics: You may not write more of a unit test than is sufficient to fail. Source: Professionalism and Test-Driven Development, Robert C. Martin, IEEE Software, 2007
  • 34. Newton’s third law of testto dynamics: You may not write more production code than is sufficient to make the failing unit test pass. Source: Professionalism and Test-Driven Development, Robert C. Martin, IEEE Software, 2007
  • 36. TDD is powerful Without TDD With TDD
  • 37. TDD slows down development? Is TDD slowing me down in coding?
  • 38. TDD slows down development?
  • 39. Lies, damn lies, and assertions
  • 42. Start TDD now (before its too late!)
  • 43. Let the fun begin!
  • 44. Image credits ❖ https://s-media-cache-ak0.pinimg.com/736x/78/c9/9e/78c99e530a69406ec249588ef87a59a9.jpg ❖ http://www.datamation.com/imagesvr_ce/4130/development-driven.jpg ❖ https://s-media-cache-ak0.pinimg.com/736x/ae/22/01/ae2201013b69918a20b6de0adf1517a1.jpg ❖ http://blog.itexus.com/img/tdd_comics.png ❖ https://martinfowler.com/articles/preparatory-refactoring-example/jessitron.png ❖ https://i2.wp.com/www.gilzilberfeld.com/wp-content/uploads/2011/02/regret-testing.png ❖ https://pixabay.com/en/pegasus-horse-winged-mythology-586124/ ❖ https://pixabay.com/en/horse-gallop-horses-standard-1401914/ ❖ https://refactoring.guru/images/content-public/index-clean-code.png ❖ http://www.lifeisanecho.com/wp-content/uploads/2016/06/ar131070344825846.jpg ❖ https://pixabay.com/en/ball-chain-bug-jail-insect-46207/ ❖ https://pixabay.com/en/home-old-school-old-old-building-1824815/ ❖ https://pixabay.com/en/escalator-stairs-metal-segments-283448/ ❖ https://devops.com/wp-content/uploads/2016/07/tdd-01-1.jpg ❖ http://www.nanrussell.com/wp-content/uploads/2015/08/Not-me.jpg ❖ https://cdn.meme.am/instances/500x/43446748/winter-is-coming-brace-yourselves-endless-client-revisions-are-coming.jpg ❖ https://t4.ftcdn.net/jpg/00/87/17/55/240_F_87175567_I7FK0h2XNxrwtnoYbufTzvpLv3p2cFrk.jpg ❖ https://cdn.meme.am/cache/instances/folder518/500x/64808518/yeah-if-you-could-just-if-we-could-stop-changing-requirements-every-5-minutes-that-would-be-great.jpg
  • 45. Image credits ❖ http://optymyze.com/blog/wp-content/uploads/sites/2/2017/02/change.jpg ❖ http://bookboon.com/blog/wp-content/uploads/2014/03/D%C3%A9veloppez-votre-potentiel.jpg ❖ https://techbeacon.com/sites/default/files/most_interesting_man_test_in_production_meme.jpg ❖ https://cdn-images-1.medium.com/max/490/1*k-OkcZd2fAyZf1WBkharGA.jpeg ❖ https://akchrish23.files.wordpress.com/2012/12/far-side-first-pants-then-your-shoes.jpg ❖ https://image.slidesharecdn.com/its-all-about-design-1232847245981881-1/95/its-all-about-design-10-728.jpg?cb=1232825731 ❖ http://www.fox1023.com/wp-content/uploads/2016/06/fail-sign1.jpg ❖ https://vgarmada.files.wordpress.com/2012/04/pass-sign.jpg ❖ http://codelikethis.com/lessons/agile_development/make-it-green.png ❖ https://refactoring.guru/images/content-public/index-refactoring-how.png ❖ http://geek-and-poke.com/geekandpoke/2014/1/15/philosophising-geeks ❖ https://employmentdiscrimination.foxrothschild.com/wp-content/uploads/sites/18/2014/06/20350757_s.jpg ❖ https://static1.squarespace.com/static/5783a7e19de4bb11478ae2d8/t/5821d2ea09e1c46748737af1/1478614300894/shutterstock_217082875-e1459952801830.jpg ❖ https://lh3.googleusercontent.com/-eM1_28qE1cM/U1bUFmBU1NI/AAAAAAAAHEk/ZqLcxFEhMuA/w530-h398-p/slide-32-638.jpg ❖ http://www.trainingforwarriors.com/wp-content/uploads/2015/03/3-Laws-Post.jpg
  • 46. Image credits ❖ https://patientsrising.org/sites/default/files/Step%20Therapy.PNG ❖ https://1.bp.blogspot.com/-Q00OoZelCic/WFSmGIUCrGI/AAAAAAAAx5U/i59y1h- czIIXNswq6aMdAOUGjgPLaPdxACLcB/s1600/awful.png ❖ http://s2.quickmeme.com/img/f4/f4b4744206cf737305f1a4619fefde7b0df54ecc0dc012adcceaadf93196a7e8.jpg ❖ https://pbs.twimg.com/media/CeZu1YjUsAEfhcP.jpg:large ❖ https://upload.wikimedia.org/wikipedia/en/thumb/f/ff/Poison_Help.svg/1024px-Poison_Help.svg.png ❖ http://data.whicdn.com/images/207820816/large.jpg ❖ http://orig04.deviantart.net/c7cb/f/2014/171/d/a/the_bare_minimum_bandits_by_shy_waifu-d7n8813.png