test, transform, refactor

88
by @_md PHPUK 2014 Test, Transform, Refactor TEST, REFACTOR Test, Transform, Refactor Test, Transform, Refactor Test, Transform, Refactor TRANSFORM,

Upload: marcello-duarte

Post on 15-Jan-2015

3.012 views

Category:

Technology


1 download

DESCRIPTION

Let's have a close look into the Red-Green-Refactor cycle and understand the subtleties of each step. When we go down the rabbit hole of Test Driven Design we sometimes take too big steps leading us to many failed tests we just can bring back to green without writing a lot of code. We need to take a step back and take the shrinking potion of baby steps again. This very illustrative talk, full of test and code examples, will dig into each of the steps of TDD to help you understand how to keep a sustainable pace that will lead you in the right track.

TRANSCRIPT

Page 1: Test, transform, refactor

by @_mdPHPUK 2014

Test, Transform,

Refactor

TEST,

REFACTOR

Test, Transform,

Refactor

Test, Transform,

Refactor

Test, Transform,Refactor

TRANSFORM,

Page 2: Test, transform, refactor

@_md Marcello Duarte

Lead developer

Head of Training Kata sensei

Learning

Page 3: Test, transform, refactor

@_md Marcello Duarte

Lead developer

Head of Training

Page 4: Test, transform, refactor

Kata

formmovementpracticedeliberate

Page 5: Test, transform, refactor

Kata

20 minutesthrow away

TDDrefactor

Page 6: Test, transform, refactor

Test

CodeRefactor

Page 7: Test, transform, refactor

3Rules

no code without test

enough to go red

enough to go greenTDD

Page 8: Test, transform, refactor

no code without test

enough to go red

enough to go green

Test

Code

Page 9: Test, transform, refactor

4Rules

tests run and passdryremove opacitySimple Design

simplify

Refactor

Page 10: Test, transform, refactor

The Roman Numerals Kata

Page 11: Test, transform, refactor

Converting arabic numbers into their roman equivalent

!

e.g. 2149 => MMCXLIX

Page 12: Test, transform, refactor

Test

Code

Refactor

Make it red

Make it green

Make it right

Page 13: Test, transform, refactor

The Roman Numerals Kata gone wrong demo

Page 14: Test, transform, refactor

Introducing TPP

Page 15: Test, transform, refactor

Test

Transform

Refactor

Make it more specific

Make it more generic

Put on the design hat

Page 16: Test, transform, refactor

Transformations (just the most basic ones)

null to constantconstant to constant+constant to scalarstatement to statementsunconditional to ifif to while

Page 17: Test, transform, refactor

Jim Weirich’s Roman Numeral Kata*

http://www.flickr.com/photos/jorendegroof/4471189540/

* in PHP

Page 18: Test, transform, refactor
Page 19: Test, transform, refactor
Page 20: Test, transform, refactor

Walking skeleton

[Cockburn 94]

Page 21: Test, transform, refactor
Page 22: Test, transform, refactor
Page 23: Test, transform, refactor
Page 24: Test, transform, refactor

Transformation null -> constant

Transformation null -> constant

Page 25: Test, transform, refactor
Page 26: Test, transform, refactor
Page 27: Test, transform, refactor
Page 28: Test, transform, refactor
Page 29: Test, transform, refactor
Page 30: Test, transform, refactor

Transformation unconditional -> if

Transformation unconditional -> if

Page 31: Test, transform, refactor
Page 32: Test, transform, refactor
Page 33: Test, transform, refactor
Page 34: Test, transform, refactor
Page 35: Test, transform, refactor

Transformation statement -> statements

Transformation statement -> statements

Page 36: Test, transform, refactor
Page 37: Test, transform, refactor
Page 38: Test, transform, refactor
Page 39: Test, transform, refactor
Page 40: Test, transform, refactor

Transformation unconditional -> if

Transformation unconditional -> if

Page 41: Test, transform, refactor
Page 42: Test, transform, refactor
Page 43: Test, transform, refactor
Page 44: Test, transform, refactor
Page 45: Test, transform, refactor

Refactor time?

Page 46: Test, transform, refactor
Page 47: Test, transform, refactor
Page 48: Test, transform, refactor
Page 49: Test, transform, refactor
Page 50: Test, transform, refactor
Page 51: Test, transform, refactor
Page 52: Test, transform, refactor
Page 53: Test, transform, refactor
Page 54: Test, transform, refactor
Page 55: Test, transform, refactor
Page 56: Test, transform, refactor
Page 57: Test, transform, refactor
Page 58: Test, transform, refactor
Page 59: Test, transform, refactor
Page 60: Test, transform, refactor

Transformation if -> while

Transformation if -> while

Page 61: Test, transform, refactor

Condition to loop transformation !

is a great indicator you are in the right track of solving the algorithm

[Martin 13]

Page 62: Test, transform, refactor
Page 63: Test, transform, refactor
Page 64: Test, transform, refactor
Page 65: Test, transform, refactor
Page 66: Test, transform, refactor
Page 67: Test, transform, refactor
Page 68: Test, transform, refactor
Page 69: Test, transform, refactor
Page 70: Test, transform, refactor
Page 71: Test, transform, refactor
Page 72: Test, transform, refactor
Page 73: Test, transform, refactor
Page 74: Test, transform, refactor
Page 75: Test, transform, refactor
Page 76: Test, transform, refactor
Page 77: Test, transform, refactor
Page 78: Test, transform, refactor
Page 79: Test, transform, refactor

Katas and Learning

Page 80: Test, transform, refactor

Kata Deliberate Practice

Koan Deliberate Learning

• Optimising for performance • Minimising variance

• Optimising for discovery • Maximising variance

[North 12]

Page 81: Test, transform, refactor

Learning TDD is learning all that TDD does for you

Page 82: Test, transform, refactor

“The beauty of a move lies not in its' appearance but in the thought behind it.”

Page 83: Test, transform, refactor

My Systemelements of chess

positional play

illustrative games

Page 84: Test, transform, refactor

First learn the elements of design Then learn how to drive it with test

Page 85: Test, transform, refactor

we are hiring try phpspec!

follow @_md

Marcello Duarte

Page 86: Test, transform, refactor

inviqa.com/tdd-immersion-day/

Page 87: Test, transform, refactor

Thank you !

Page 88: Test, transform, refactor

Questions or Comments?

want to learn more? inviqa.com/tdd-immersion-day/

@_mdjoind.in/10711