4 - Test Driven Development
4 - Test Driven Development
Driven Development
So#ware
Quality
Quality
Audit
and
Cer6fica6on
Master
in
Computer
Engineering
Roberto
García
([email protected])
Introduc6on
• Tes6ng
is
the
most
popular
quality-‐improvement
ac6vity.
• SoGware
is
tested
in
numerous
ways,
some
performed
by
developers
and
others
by
specialized
test
personnel.
• Simplest
developer
tes:ng:
– Unit
tes:ng:
the
execu6on
of
a
complete
class,
rou6ne
or
small
program.
• WriOen
by
a
single
programmer
or
team
of
programmers.
• Tested
in
isola:on
from
the
complete
system.
Introduc6on
• Design
the
test
cases
along
with
the
product
to
find
defects
as
early
as
possible
• Advantages
of
wri6ng
test
cases
first:
– Detect
defects
earlier.
– Forces
to
think
at
least
a
liOle
bit
about
the
requirements
and
design
before
wri6ng
code.
– Wri6ng
test
cases
first
exposes
requirements
problems
sooner
because
it's
hard
to
write
a
test
case
for
a
poor
requirement.
Introduc6on
• Test-‐driven
development
(TDD)
is
a
development
technique
where
you
must
first
write
a
test
that
fails
before
you
write
new
func6onal
code.
• Complementary
to
Agile
development
– Methods
based
on
itera:ve
and
incremental
development,
where
requirements
and
solu6ons
evolve
• Not
a
replacement
for
tradi6onal
tes6ng,
a
proven
way
to
ensure
effec6ve
unit
tes6ng.
Introduc6on
• TDD
requires
a
tes:ng
framework.
• OGen
the
xUnit
family
of
open
source
tools
– JUnit:
the
framework
for
Java
• TDD
encourages
small
steps
when
wri6ng
soGware
– It
is
much
easier
to
find,
and
then
fix,
defects
Learning-‐by-‐doing
• Kata
(型
or
形
literally:
"form”)
– Thee
Japanese
word
describing
detailed
choreographed
paOerns
of
movements
to
be
prac6sed.
Learning-‐by-‐doing
• The
Bowling
Game
Kata
– hOp://butunclebob.com/
Ar6cleS.UncleBob.TheBowlingGameKata
– A
kata
is
meant
to
be
memorized.
– It
is
not
the
conclusion
of
the
kata
that
maOers,
it's
the
steps
that
lead
to
the
conclusion.
– As
you
learn
the
form,
and
repeat
it,
and
repeat
it,
you
will
condi6on
your
mind
and
body
to
respond
the
way
I
respond
to
the
minute
factors
that
lead
to
design
decisions.
– I
have
broken
the
kata
up
into
five
short
sec:ons.
Fully
learn
one
sec:on
before
adding
the
next.
– Don't
learn
the
next
un6l
you
have
mastered
the
previous.
A
kata
needs
to
seep
into
your
bones,
and
this
take
6me.
Learning-‐by-‐doing
• The
Bowling
Game
Kata
– Presenta6on:
hOp://butunclebob.com/files/downloads/Bowling
%20Game%20Kata.ppt
• Addi:onal
resources:
“Bowling
Game
Kata.ppt”
– Videos:
• hOp://www.youtube.com/watch?v=2PfXbKIDbKw
(C#,
Visual
Studio)
• hOp://www.youtube.com/watch?v=igywEzPJRsM
(Java,
Eclipse)
Exercise
• First
of
all,
master
the
“Bowling
Game
Kata”
;-‐)