| Test-Driven Development (TDD) is a method of developing software that is driven by tests. This means that the developers MUST FIRST WRITE the test cases before writing the code. | BDD is an acronym for behavior-driven development. It's a behavior-based development approach. |
| TDD tests are developed in a variety of programming languages, including Java,.NET, Python, Ruby, and others. | Given-When-Then steps are used to write BDD tests in a human-readable fashion. Non-technical people MAY read and comprehend these tests as well. |
| The scope is the key distinction between TDD and BDD. TDD is a development methodology. | BDD, on the other hand, is a collaborative methodology. |
| When a test fails because the specified function does not exist, TDD recommends writing the simplest code possible to pass the test, then reworking to remove duplication, and so on. | Creating an executable specification that fails because the feature isn't available, then writing the simplest code possible to make the spec pass in BDD. This process is repeated until a release candidate is ready to be delivered. |
| The test cases are written by the developers in TDD. | Users or testers write AUTOMATED specifications in BDD, which are then wired to the code under test by developers. |
| Because TDD tests are written in specific programming languages, they are difficult to interpret by non-programmers. | Non-programmers can read BDD tests since they are written in a human-readable format. |