test drivendevelopment onstage demo

Post on 11-May-2015

264 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

Resources

Intro To TDD Class (4 Day)Legacy Code

www.Develop.com

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

top related