I'm in the final phase of a Drupal development project for a customer.
It has some custom modules and code I wrote with automated tests and test-driven development.
Today, the client reported a bug.
But, instead of something working incorrectly, this was a use case I hadn't considered.
The tests were passing, but there wasn't one for this.
I wrote the code for the use cases I was aware of when I started, and now I'm aware of another, I can add a test for it and ensure it's tested and working.
To do test-driven development, you don't need to know all the use cases and functionality upfront.
Write for what you know at the time, then expand and iterate in the future.