"TDD is about design, not verification"; concretely, what does that mean?
- by sigo
I've been wondering about this. What do we exactly mean by design and verification.
Should I just apply TDD to make sure my code is SOLID and not check if it's external behaviour is correct?
Should I use BDD for verifying the behaviour is correct?
Where I get confused also is regarding TDD code Katas, to me they looked like more about verification than design; shouldn't they be called BDD Katas instead of TDD Katas?
I reckon that for example the Uncle Bob bowling Kata leads in the end to a simple and nice internal design but I felt that most of the process was centred more around verification than design. Design seemed to be a side effect of testing the external behaviour incrementally. I didn't feel so much that we were focusing most of our efforts on design but more on verification. While normally we are told the contrary, that in TDD, verification is a side effect, design is the main purpose.
So my question is what should I focus on exactly, when I do TDD: SOLID, external API usability, or something else?
And how can I do that without being focused on verification?
What do you guys focus your energy on when you are practising TDD?