For what I know, TDD is actually used in environments where the expected output is always predictable and it's purely based on data.
A friend who work on medical software has a suite of test defined in advance and they just need to make sure the code work as intended.
Many who fails misuse it where it's almost impossible to work with precise outcomes.
When I use unit tests, I do to ensure that code I've written and is already working, keep doing what I want after I change other related parts in the future.