SlideShare a Scribd company logo
Test Driven Development
          An On-stage Demonstration
          @LlewellynFalco
A little

HISTORY…
Test drivendevelopment   onstage demo
Test drivendevelopment   onstage demo
Test drivendevelopment   onstage demo
Is Testing Faster? (Test After)
                       60 Minutes
         Work (code)
                                    X minutes
         Non-Work(tests)

           Code
                 <
        60 Minutes
                        Code + Test
                       60 + X minutes
Is Testing Faster? (Test 1st)
                                       60 – Time Saved
                                       30 Minutes
         Work (code)
                           X minutes
         Non-Work(tests)


           Code
        60 Minutes   <
                     ?
                           Test + Code
                         X + 30 minutes
Today’s Kata: Triangle
 1)    A side has a distance
 2)    Side knows endpoints
 3)    3 points
 4)    3 sides
 5)    Perimeter
 6)    Get sides touching a point
 7)    Get side opposite a point
 8)    The angle of 2 sides touching a point
 9)    3 angles
 10)   Right Triangle
Test drivendevelopment   onstage demo
Parts of a Test
1) Do
2) Verify
Demo
Benefits of Unit Tests
1)   Specification
2)   Feedback
3)   Regression
4)   Granularity
Regression
If I used to get :
Then I still get :
Intentional Code

// Create a Side from (0,0) to (5,0)

var side = new Side(0,0,5,0);
7H15 M3554G3
           53RV35 7O PR0V3
        H0W 0UR M1ND5 C4N D0
4M4Z1NG 7H1NG5! 1MPR3551V3 7H1NG5!
 1N 7H3 B3G1NN1NG 17 WA5 H4RD BU7
          N0W, 0N 7H15 LIN3
       Y0UR M1ND 1S R34D1NG 17
    4U70M471C4LLY W17H 0U7 3V3N
         7H1NK1NG 4B0U7 17,
  B3 PROUD! 0NLY C3R741N P30PL3 C4N
             R3AD 7H15.
          U C4N R35D 7H15!!!
Consume      1st

Write the objects & methods you wish existed
Test Until Bored
Test the cases that bring you value
Verification
 Is it the right answer?
 1. Change the Question
 2. Ask an expert
Completing the Circle
Your output should tell the story.
Objects should have ToStrings
                                     Benefits
                                     1. Specification
                                     2. Feedback
                                     3. Regression
                                     4. Granularity
Fake it Till You Make It
Buys some time
Allows for Triangulation
Today’s Kata: Triangle
 1)    A side has a distance
 2)    Side knows endpoints
 3)    3 points
 4)    3 sides
 5)    Perimeter
 6)    Get sides touching a point
 7)    Get side opposite a point
 8)    The angle of 2 sides touching a point
 9)    3 angles
 10)   Right Triangle
Verifying Multiples
Verify Single:
Approvals.Verify(result);

Verify Many:
Approvals.VerifyAll(results, "label");
Multiple Cases
Approvals.VerifyAll(cases, c =>
TestWith(c));
Maintaining Tests
Same Quality as Production Code
Granularity of Test?
Test drivendevelopment   onstage demo
Resources
    Test Driven Development: By Example
                              Kent Beck
Resources   www.ApprovalTests.com
              (.net, java, php, ruby)

                   Herding Code Podcast
www.ApprovalTests.com
               (.net, java, php, ruby)
Resources   20 episode youtube series
Resources                    www.Develop.com

Intro To TDD Class (4 Day)
Legacy Code
TeachingKidsProgramming.org
Do a Recipe  Teach a Kid (Ages 10 ++)
Microsoft SmallBasic, Java  Free Courseware (recipes)
Please fill out evaluations:
TDD – Demo #AW11
              @LlewellynFalco
              http://LlewellynFalco.Blogspot.com
              http://www.approvaltests.com

More Related Content

Test drivendevelopment onstage demo

Editor's Notes

  1. Both
  2. Both
  3. Both
  4. Both
  5. Both
  6. Both
  7. Both
  8. Both
  9. Both
  10. Both
  11. Both
  12. Both
  13. Both
  14. Both
  15. Both
  16. Both
  17. Both
  18. Both
  19. Both
  20. Both
  21. Both
  22. I add this slide at the end of EVERY presentation.
  23. Both