TDD is developer-focused design through unit tests, ATDD defines acceptance criteria before delivery, and BDD uses shared business language to describe behavior collaboratively.
Detailed explanation
TDD starts with small failing tests that guide code design, usually at unit level. ATDD focuses on acceptance criteria agreed before implementation, often at feature or story level. BDD builds on that idea by emphasizing collaboration, examples, and ubiquitous language so business, QA, and engineering share one understanding of expected behavior.
Practical example
For login, TDD might test PasswordValidator, ATDD might define acceptance checks for valid and invalid credentials, and BDD might express the behavior as Given a registered user, When they sign in, Then they see their dashboard.