If you focus on the idea, and not on technical implementation, then yes. What I am saying is if you forget about unit testing for a moment and focus on the idea of writing tests first before writing an implementation in order to achieve a more precise design than can be done even at the system level.
Imagine this, you have some requirements. Based on this, you write user acceptance testing tests - high-level tests that provide capture functionality. Then you start development - you already have use cases in the form of a UAT test. You know exactly what is expected, therefore it is easier to implement the desired functionality.
Another example is a scrum-based project. At a planning meeting, you discuss / create / have user stories that are later developed during the sprint. These user stories may be UAT tests.
In any case, I see TDD as a way of defining a design rather than a test cycle / phase / application testing methodology. The reason TDD is seen as a synonym for unit testing is because unit tests are as close as possible to the developer. They seem like a natural way for a developer to express the functional design of a class / method.
yoosiba
source share