�
Test Driven Developmenttdd.talks.makandra.commakandra GmbH
continued slides from chapter #2
� �
� �
� �
�
shopping_cart.feature, line 6
Expected to see "Item was added to cart"
...................................................................
.......................................... .........................
......................
157 scenarios (156 passed, 1 failed)
�Technical debt
� �
� �
„Customers should be able to order without registration or login“
� �
„Customers should be able to order without registration or login“
�
As a project progresses,
it accumulates technical debt
� Code is growing more coupled, but cleaning up is risky
� Error rates are rising
� Regressions:New features are breaking existing features
� Changes become increasingly expensive
� �
project progression
Fixing bugs, wrestling with old code
Implementing new featuresw
ork
ing
ho
urs
� �project progression
exp
en
ses
Credits: davenicolette.net
� �project progression
exp
en
ses
Fixing bugs
New features
pla
nn
ed
pro
ject
lif
esp
an
Credits: davenicolette.net
� �project progression
exp
en
ses
Fixing bugs
New features
pla
nn
ed
pro
ject
lif
esp
an
Credits: davenicolette.net
� �project progression
exp
en
ses
Fixing bugs
New features
de
ath
of
the
pro
ject
pla
nn
ed
pro
ject
lif
esp
an
Credits: davenicolette.net
� �
Credits: davenicolette.net
� �
original code
cost of next change
C
Credits: davenicolette.net
� �
original code
cost of next change
C
code after change
cost of next change
C + n
Credits: davenicolette.net
� �
original code
cost of next change
C
code after change
cost of next change
C + n
refactored code
cost of next change
C
Credits: davenicolette.net
�
Tests enable continuous reduction
of technical debt
� In the presence of tests, code refactoring is easy and riskless
� Technical debt is repaid in small installment over the course of the project
� Problems are mitigated before they become unmaintainable
� �project progression
exp
en
ses
Fixing bugs
New features
pla
nn
ed
pro
ject
lif
esp
an
Credits: davenicolette.net
� �project progression
exp
en
ses
Fixing bugs
New features
pla
nn
ed
pro
ject
lif
esp
an
Credits: davenicolette.net
�Fast releases
�
Manual QA sucks
� Manually testing a release is time-consuming
� As the number of features grows, so does the time required to manually test for regressions
� A natural reaction is to release less often(„big bang releases“)
�
R 1.0 R 1.2
QAdevelopment QAdevelopment
�
Unreleased features are worthless
� Only released features add value to the client's business
� Only released features will generate feedback
� Code ages while requirements keep evolving
�
Test-assisted QA enables fast delivery
� Manual QA for new features only
� Minimizes a feature's lead time from commission to release
�
QAdevelopment QAdevelopment
R 1.0 R 1.2
�
QAdevelopment QAdevelopment
R 1.0 R 1.2
development with automated tests
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11
�
this presentation continues with chapter #3 attdd.talks.makandra.com
�
„dummies“ by greg westfall.www.flickr.com/photos/imagesbywestfall/3658162161/
„Day 4 – Paying off debt“ by quaziewww.flickr.com/photos/quazie/578252290/
„where to?“ by limaoscarjulietwww.flickr.com/photos/limaoscarjuliet/822938133/
„20100509 Kinetic Spring 086“ by cygnus921www.flickr.com/photos/cygnus921/4592767178/
„Hamburg Nightlights“ by eriwstwww.flickr.com/photos/eriwst/3483623571/
Illustrations
�