Slide 1

Slide 1 text

Software Architecture and Thinking. Raising TDD from the dead.

Slide 2

Slide 2 text

Who am I ? @l3l0 http://github.com/l3l0

Slide 3

Slide 3 text

Agenda Basics about TDD. Mocking explanation. Software Architecture and TDD. How TDD impact the speed of development?

Slide 4

Slide 4 text

What is TDD?

Slide 5

Slide 5 text

Are we really testing?

Slide 6

Slide 6 text

TDD is about code specification and planning.

Slide 7

Slide 7 text

PHPSpec

Slide 8

Slide 8 text

PHPSpec

Slide 9

Slide 9 text

Few words about mocking.

Slide 10

Slide 10 text

Dummy, Stub, Mock.

Slide 11

Slide 11 text

Dummy

Slide 12

Slide 12 text

Production code

Slide 13

Slide 13 text

Stub

Slide 14

Slide 14 text

Production code

Slide 15

Slide 15 text

Mock

Slide 16

Slide 16 text

Production code

Slide 17

Slide 17 text

States vs Messages.

Slide 18

Slide 18 text

OOP is about messaging.

Slide 19

Slide 19 text

Mockist TDD is about planning communication, interfaces and message protocols.

Slide 20

Slide 20 text

Classic TDD is about planning expected state or just checking the result.

Slide 21

Slide 21 text

Mockist TDD example

Slide 22

Slide 22 text

Classic TDD example

Slide 23

Slide 23 text

Classic TDD example

Slide 24

Slide 24 text

Mock or not to mock?

Slide 25

Slide 25 text

Mocking drawbacks.

Slide 26

Slide 26 text

Classic approach drawbacks.

Slide 27

Slide 27 text

Let's find the balance!

Slide 28

Slide 28 text

TDD as a software design tool.

Slide 29

Slide 29 text

TDD is an enabler for thinking about communication and messages.

Slide 30

Slide 30 text

Revealing object dependencies.

Slide 31

Slide 31 text

Mocking allow to design base on abstraction, so finish with...

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

TDD and development time.

Slide 34

Slide 34 text

Do you spend more time writing code doing TDD?

Slide 35

Slide 35 text

I bet you DO! but...

Slide 36

Slide 36 text

What about time spent on fixing bugs ? What about time spent on creating upfront design ? What about time spent on manually testing our work ?

Slide 37

Slide 37 text

SO...

Slide 38

Slide 38 text

IS TDD DEAD ?

Slide 39

Slide 39 text

FU***NG NO!!!

Slide 40

Slide 40 text

Thanks!

Slide 41

Slide 41 text

http://cocoders.com @l3l0 l3l0 [at] cocoders.com https://github.com/l3l0/tdd-architecture-talk-exam ples