types of coding
automated tests
with
lemi orhan ergin, agile software craftsman @ craftbase
Slide 2
Slide 2 text
CODE
TEST REFACTOR
Test
Driven Development
TEST
FAIL
TEST
PASS
START
Slide 3
Slide 3 text
CODE
Refactoring is skipped to be faster
Increased duplication in code
Long methods
We have to clean our mess
TEST
FAIL
TEST
PASS
Tested Mess
Based Development
TEST
START
Slide 4
Slide 4 text
Refactoring is skipped to be faster
Increased duplication in code
Long methods
We have to clean our mess
TEST
FAIL
TEST
PASS
Test First Then
Write Everything
Based Development
TEST
START
CODE
CODE
CODE CODECODECOD
ODE
Slide 5
Slide 5 text
CODE
TEST
FAIL
TEST
PASS
TEST
FAIL
Failed test guaranteed
Can mask ignorance of domain
Dummy-Test First
Development
TEST
update
same
TEST REFACTOR
START
Slide 6
Slide 6 text
CODE
START
TEST REFACTOR
TEST
PASS
No failing tests
Useful for exploring
Losing focus on design
Mock misuse
Too much refactoring required
Code First
Development
Slide 7
Slide 7 text
CODE
START
TEST REFACTOR
TEST
PASS
Uncovered bugs
Hard to write tests
Bored programmers
Lower test quality
Test Last
Development
CODE
CODE CODECODECODE
CODE
Slide 8
Slide 8 text
CODE
TEST REFACTOR
TEST
PASS
START
TEST
TEST
TEST
TEST
TEST
TEST
TEST
TEST
TEST TEST
FAIL
TEST
Allows planning for future code
Loss of focus
Harder to code against
Test Everything First
Development
Slide 9
Slide 9 text
CODE
TEST
REFACTOR
TEST
PASS
START
TEST
FAIL
Large, bri!le setup methods
Slow tests
High level tests
People hate testing
Huge Setup
Based Development
SETUP
Slide 10
Slide 10 text
CODE
SCENARIO
REFACTOR
Acceptance Test
Driven Development
TEST
PASS
START
TEST
TEST
FAIL
SCENARIO
FAIL
SCENARIO
PASS
Increased focus
Focus on requirements
Do also the right thing