Test Driven Development
     Why Should You Care about TDD
      And Automated (Unit) Testing?


                Naresh Jain
            Twitter: @nashjain
      Blog: http://blogs.agilefaqs.com


         Licensed Under Creative Commons by Naresh Jain
                                                          1
Test Driven Development




TDD Rhythm - Test, Code, Refactor




                                    2
Test Driven Development

                                    Add a Test




TDD Rhythm - Test, Code, Refactor




                                                 2
Test Driven Development

                                    Add a Test



                                    Run the Test


TDD Rhythm - Test, Code, Refactor




                                                   2
Test Driven Development

                                           Add a Test

                                    Pass
                                           Run the Test


TDD Rhythm - Test, Code, Refactor




                                                          2
Test Driven Development

                                           Add a Test

                                    Pass
                                           Run the Test

                                                  Fail
TDD Rhythm - Test, Code, Refactor




                                                          2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change




                                                           2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change


                                           Run the Test




                                                           2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change

                                                           Fail
                                           Run the Test




                                                                  2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change

                                                           Fail
                                           Run the Test
                                                   Pass




                                                                  2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change

                                                           Fail
                                           Run the Test
                                                   Pass
                                             Refactor




                                                                  2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change

                                                           Fail
                                           Run the Test
                                                   Pass
                                             Refactor




                                                                  2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change

                                                           Fail
                                           Run the Test
                                                   Pass
                                             Refactor




                                                                  2
Test Driven Development

                                            Add a Test

                                    Pass
                                           Run the Test

                                                   Fail
TDD Rhythm - Test, Code, Refactor          Make a little
                                             change

                                                           Fail
                                           Run the Test
                                                   Pass
                                             Refactor




                                                                  2
Why Learn TDD?


                 3
Manual (monkey) Checking by
   Developers and Tester




                              4
Stay away from (time hungry)
          debugger




                               5
Maintain Focus



                 6
Confidence




            7
Reduce Wastage: Hand Overs




                         8
Helps you
Slow down
 and Think

             9
Communication




                10
11
Ultimate Goals




                 12
Ultimate Goals


• Bring JOY back to programming




                                  12
Ultimate Goals


• Bring JOY back to programming
• Understand Code Easily




                                  12
Ultimate Goals


• Bring JOY back to programming
• Understand Code Easily
• Produce Simple, Testable, Loosely-Coupled Design




                                                     12
Ultimate Goals


• Bring JOY back to programming
• Understand Code Easily
• Produce Simple, Testable, Loosely-Coupled Design
• Build Quality In



                                                     12
Ultimate Goals


• Bring JOY back to programming
• Understand Code Easily
• Produce Simple, Testable, Loosely-Coupled Design
• Build Quality In
• Reduce Maintenance Significantly


                                                     12
Living, up-to-date
   specification




                     13
Learning:
Listen to your code



                      14
Testable Code by Design
            +
       Safety Net




                          15
Communicate Design
   Decisions




                     16
Loosely-Coupled Design




                         17
Refactoring




              18
Ultimate Goals


• Bring JOY back to programming
• Understand Code Easily
• Produce Simple, Testable, Loosely-Coupled Design
• Build Quality In
• Reduce Maintenance Significantly


                                                     19
Thank You!
      Naresh Jain
 naresh@agilefaqs.com




Licensed Under Creative Commons by Naresh Jain
                                                 20

Why Test Driven Development?