Габриэль почти прав.
Принципиальное отличие на уровне единицы состоит в том, что BDD использует слово «должен» вместо «тест». Оказывается, когда вы говорите «тест», большинство людей начинают задумываться о том, что делает их код и как они могут его тестировать. С BDD мы рассматриваем - и задаем вопрос - что должен делать наш код . Это тонкий, но важный момент, и если вы хотите узнать, почему это мощно, прочитайте о нейролингвистическом программировании - особенно о том, как слова влияют на мысли и модель мира. В качестве краткого примера, многие новички в TDD начинают закреплять свой код, чтобы никто не смог его взломать. BDDers, как правило, предоставляют примеры, которые демонстрируют ценность их кода, чтобы люди могли безопасно изменять свой код.
Дэн понял, когда разговаривал с Крисом Мэттсом и писал JBehave, что он может поднять это до уровня сценария (сценарии не совсем такие же, как истории). Поскольку мы уже использовали слово «следует» на уровне единиц, имело смысл начать писать вещи на английском языке (например, я склонен использовать «должен дать мне», а не «должен вернуться»). Разработка на основе приемочных испытаний - ATDD - существует уже давно, но это был AFAIK первый раз, когда кто-то писал их на английском языке с участием заинтересованных сторон.
Это больше, чем просто замена TDD. Это другой способ мышления о тестировании - очень сосредоточенный на обучении, преднамеренном обнаружении областей, где мы, возможно, думали, что мы знали, что мы делаем, но не знали, раскрывая и помогая нам разрешить невежество и недоразумение. Это работает на многих уровнях. Функция «Впрыскивание» Криса Мэтта переносит это в пространство более высокого уровня, вплоть до видения проекта.
Мы все еще пишем примеры - или спецификации, если хотите, - также на уровне единиц, но на самом деле, это шаблон, который намного выше, чем даже сценарии. Если вы хотите узнать больше, вы можете найти мой блог полезным , Dan's даже лучше . Кроме того, у Криса есть комикс о реальных опционах , в котором описаны некоторые из упомянутых мной шаблонов.