Whenever we have a practice that is popular enough to be identified by a name, the specialist/professionals see just part of it and then propagate it in different ways in particular contexts, that create confusion among those that try to understand it.
Then there arises a clan that love it understanding it as something and another clan that hate it understanding it as something different, start of discussing it from completely different contexts - example Is TDD Dead
I like to place the emphasis on the last word of the term, Development - Software Development, it is not just test driven implementation but for me the whole process of Software Development,also echoed here TFP & TDD difference
- This means Test of Design via Prototype,
- Test of Requirement via Acceptance Test for each User Story,
- Test of Implementation via Unit Test,Integration Test, Stress Tests and Manual tests and
- Test of Documentation.
Test First Programming for me isjust one way and one part in Test of Implementation.
This for me is TDD and like Love, however agnostic and contrary way you look at it, you cannot really hate it :)