Test-driven development (TDD) has been around for a while now. Behavior-driven development (BDD), a comparably recent methodology, emerged from the practice of TDD and could reasonably be called a narrower application of TDD.
The TDD process allows a developer to use a failing unit test to express a shortcoming of the system. The next step is to modify the production code to get the failing test to pass without making existing tests fail. BDD more or less takes this same concept and adds the idea that the tests should be written in easy-to-understand language describing the problem domain, and that tests should express user acceptance criteria.