tdd: what is it good for?

58
TDD what is it good for?

Upload: david-simons

Post on 05-Aug-2015

18 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: TDD: What is it good for?

TDDwhat is it

good for?

Page 2: TDD: What is it good for?

David Simons

Developer @

Softwire

<3 Databases

Part-time Elf

Page 3: TDD: What is it good for?
Page 4: TDD: What is it good for?
Page 5: TDD: What is it good for?
Page 6: TDD: What is it good for?

Automated Testing

Page 7: TDD: What is it good for?

Functional Testing

Page 8: TDD: What is it good for?

Stress Testing

Page 9: TDD: What is it good for?

Unit Testing

Page 10: TDD: What is it good for?
Page 11: TDD: What is it good for?

Flight Availability

Repository

Flight Availability

Service

Page 12: TDD: What is it good for?

Flight Availability

Repository

Flight Availability

Service

Page 13: TDD: What is it good for?

Test Double

Page 14: TDD: What is it good for?

Flight Availability

Service

Flight Availability Repository

Page 15: TDD: What is it good for?

Flight Availability

Service

Flight Availability Repository

isAvailable?

Page 16: TDD: What is it good for?

Flight Availability

Service

Flight Availability Repository

no

Page 17: TDD: What is it good for?

What is TDD?

Page 18: TDD: What is it good for?

Test Driven Development

Page 19: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 20: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 21: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 22: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 23: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 24: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 25: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 26: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 27: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 28: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 29: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 30: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 31: TDD: What is it good for?

Failing TestMake it PassRefactor

Page 32: TDD: What is it good for?

All possible tests pass

Page 33: TDD: What is it good for?
Page 34: TDD: What is it good for?

@Unroll def "Fib Number #input is #result"() { given: def fibCalc = new FibCalculator() expect: fibCalc.calculate(input) == result }

where: input| result 0 | | 0

Page 35: TDD: What is it good for?

int calculate(int input) { 0 }

where: input| result 0 | 0

Page 36: TDD: What is it good for?

int calculate(int input) { 0 }

where: input| result 0 | 0 1 | 1

Page 37: TDD: What is it good for?

int calculate(int input) { input }

where: input| result 0 | 0 1 | 1

Page 38: TDD: What is it good for?

int calculate(int input) { input }

where: input| result 0 | 0 1 | 1 2 | 1

Page 39: TDD: What is it good for?

int calculate(int input) { if(input == 0) { return 0 } 1 }

where: input| result 0 | 0 1 | 1 2 | 1

Page 40: TDD: What is it good for?

int calculate(int input) { if(input == 0) { return 0 } 1 }

where: input| result 0 | 0 1 | 1 2 | 1 3 | 2

Page 41: TDD: What is it good for?

int calculate(int input) { if(input == 0) { return 0 } if(input <= 2) { return 1 } 2 }

where: input| result 0 | 0 1 | 1 2 | 1 3 | 2

Page 42: TDD: What is it good for?

int calculate(int input) { if(input < 2) { return input } 1 + calculate(input – 2) }

where: input| result 0 | 0 1 | 1 2 | 1 3 | 2

Page 43: TDD: What is it good for?

int calculate(int input) { if(input < 2) { return input } 1 + calculate(input – 2) }

where: input| result 0 | 0 1 | 1 2 | 1 3 | 2 4 | 3

Page 44: TDD: What is it good for?

int calculate(int input) { if(input < 2) { return input } calculate(input - 2) + calculate(input – 1) }

where: input| result 0 | 0 1 | 1 2 | 1 3 | 2 4 | 3

Page 45: TDD: What is it good for?

The Benefits

Page 46: TDD: What is it good for?

Breaking Down

Problems

Page 47: TDD: What is it good for?

Testing Anti-Patterns

Page 48: TDD: What is it good for?

Regression Testing

Page 49: TDD: What is it good for?

DHH

Page 50: TDD: What is it good for?

“the test-first rhetoric got louder and angrier”

Page 51: TDD: What is it good for?

“look at what that approach is doing to the integrity of your system design”

Page 52: TDD: What is it good for?

(I had to

do this)

Page 53: TDD: What is it good for?

Is TDD Dead?

Page 54: TDD: What is it good for?

Added Complexity

Page 55: TDD: What is it good for?

Dogmatism

Page 56: TDD: What is it good for?

TDDis it dead?

Page 57: TDD: What is it good for?
Page 58: TDD: What is it good for?

any

questions?

@SwamWithTurtles