Full-stack
Test-driven
Development
marko.bjelac@softwaresauna.com
Why TDD?
Implement
Write tests
Redesign (refactor)
Fix bugs
Test-drive
Testless
TAD
TDD
Firestorm
Time ($$$)
Why TDD?
… or just google: GEEPAW
The Cycle
The Cycle
Red
Test
SUT
The Cycle
Red
Test
Green
SUT
The Cycle
Red
Test
Green
SUT
The Cycle
Red
Test
Green
SUT
Refactor
ATDD
ATDD
Red
Spec
ATDD
Red
Spec
ATDD
Red
Spec
ATDD
Red
Spec
ATDD
Red
Spec
Green
ATDD
Red
Spec
Green
ATDD
Red
Spec
Green
Refactor
Specification
Interactor
Logic
Adapter
Externality
Adapter
public API
Test-driven Architecture
Microtest
User
system boundary
mocking
Specification
Interactor
Logic
Adapter
Interactor nesting & re-use
Interactor
Interactor
Interactor
Logic
Adapter
Logic
Logic
Specification
Interactor
Logic
Interactor
Logic
Adapter
Microtest
Microtest
Microtest
Microtest
Microtest
Microtest
test setup
test setup
system boundary
public API
user
external dependency
external dependency
specification
microtest
interactor
logic
adapter
test double
implementation
usage
API
microtest scope
specification scope
test setup
test setup
system boundary
public API
user
external dependency
external dependency
specification
microtest
interactor
logic
adapter
test double
implementation
usage
API
microtest scope
specification scope
deployable #2
deployable #1
Contract
test setup
test setup
system boundary
public API
user
external dependency
external dependency
specification
microtest
interactor
logic
adapter
test double
implementation
usage
API
microtest scope
specification scope
deployable #2
deployable #1
Front-end (JS)
Back-end (Java)
Full-stack!
MySQL
React