test drivendevelopment onstage demo
DESCRIPTION
Test-driven development (TDD) is a skill that takes patience to master—you can’t learn it reading a book. As with learning any new language, to gain fluency you need to practice TDD with competent coaching and lots of hard work. Many well-intentioned programmers try and finally give up on TDD because they never develop the fluency it requires. On stage, Llewellyn Falco leads a live TDD demonstration, talking through the process and microsteps of: (1) studying a feature, (2) creating an initial test, and (3) iteratively developing the related test code and feature code until the feature is completely programmed. Watch how to iteratively write a test, see it fail, and then write the feature code to make it pass. After explaining the theory behind the particular TDD technique used, Llewellyn leads participants in testing progressively more complex objects and scenarios.TRANSCRIPT
Test Driven DevelopmentAn On-stage Demonstration @LlewellynFalco
HISTORY…A little
Is Testing Faster? (Test After)
Work (code)
Non-Work(tests)
60 Minutes
X minutes
Code60 Minutes< Code + Test
60 + X minutes
Is Testing Faster? (Test 1st)
Work (code)
Non-Work(tests)
30 Minutes
X minutes
Code60 Minutes < Test + Code
X + 30 minutes?
60 – Time Saved
Today’s Kata: Triangle1) A side has a distance2) Side knows endpoints3) 3 points4) 3 sides5) Perimeter6) Get sides touching a point7) Get side opposite a point8) The angle of 2 sides touching a point9) 3 angles10) Right Triangle
Parts of a Test
1) Do2) Verify
Demo
Benefits of Unit Tests
1) Specification2) Feedback3) Regression4) Granularity
Regression
If I used to get : Then I still get :
AA
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
VerificationIs it the right answer?1. Change the Question2. Ask an expert
Completing the CircleYour output should tell the story.Objects should have ToStrings
Benefits1. Specification2. Feedback3. Regression4. Granularity
Fake it Till You Make ItBuys some timeAllows for Triangulation
Today’s Kata: Triangle1) A side has a distance2) Side knows endpoints3) 3 points4) 3 sides5) Perimeter6) Get sides touching a point7) Get side opposite a point8) The angle of 2 sides touching a point9) 3 angles10) Right Triangle
Verifying MultiplesVerify Single:Approvals.Verify(result);
Verify Many:Approvals.VerifyAll(results, "label");
Multiple Cases
Approvals.VerifyAll(cases, c => TestWith(c));
Maintaining TestsSame Quality as Production Code
Granularity of Test?
ResourcesTest Driven Development: By Example
Kent Beck
Resources www.ApprovalTests.com(.net, java, php, ruby)
Herding Code Podcast
Resourceswww.ApprovalTests.com
(.net, java, php, ruby)
20 episode youtube series
TeachingKidsProgramming.orgDo a Recipe Teach a Kid (Ages 10 ++)Microsoft SmallBasic, Java Free Courseware (recipes)
Please fill out evaluations:TDD – Demo #AW11
@LlewellynFalcohttp://LlewellynFalco.Blogspot.comhttp://www.approvaltests.com