Outside-in TDD (London Style)
Kata from Sandro Mancuso
Objectives
Learn and practice the double loop of TDD
Test application from outside, according to side effect
Connection - 10'
What does it bring to design classes as a consumer of the class ?
What could it bring to do it in pair ?
[Which kind of tool can help you design better software ?] - Optional
Concepts - 10'
In outside-in TDD we only implement what is needed to serve the outside.
Write an acceptance test that fails
Something that can be accepted by a stakeholder
The feature test
Keep it red
It will indicate what to test
Drive to the next step
This double loop continues till the feature test turns green
By using this practice :
Think about what you want to test in isolation (mocking)
Create unit tests
What are your test boundaries ?
Use mocks to design the collaborations
The test is used to design the system, and part of that design is deciding how the different components interact / how they are bounds to each others
Concrete Practice - 2h minimum
Here are your instructions :
Create a simple bank application with the following features :
Deposit money
Withdraw money
Print a bank statement to the console
Acceptance criteria
Statement should have the following the format :
How to start ?
In pair :
Start with an acceptance test
Use int for money and String for dates
Ignore the formatting of the statement for now
Start by designing Service contract
You cannot change the public interface of this class.
As a coach use the Double Loop diagram to demo where the people are.
Sequence Diagram
Introduce the use of Sequence diagram after some time spend on the kata
Use sequence diagram to :
Think about how the different objects will collaborate
Identify what should be mock and when
Test Driven Development != Test Driven Design
Good design is driven by experience & principles, not by any TDD approach in and of itself.
Take times to reflect on the design outside of the test : great to use diagrams for it
Conclusion - 10'
In pair, list all the pros / cons of this Double Loop Approach
Share it all together
Resources
London vs Chicago (video series)
Sandro Mancuso and Uncle Bob
Last updated