TDD primarily focuses on writing tests before writing the code. It follows a cycle of creating tests, writing code to pass those tests, and then refactoring if needed. BDD, on the other hand, focuses on capturing system behaviour from the perspective of stakeholders that encourages collaboration among developers, testers, and business stakeholders to define behaviour using a structured language.