15 ответов:
Я понимаю BDD, чтобы быть больше о спецификация чем тестирование. Он связан с доменным дизайном (вам не нравятся эти аббревиатуры *DD?).
это связано с определенным способом написания пользовательских историй, включая тесты высокого уровня. Пример от том Тен Тидж:
Story: User logging in As a user I want to login with my details So that I can get access to the site Scenario: User uses wrong password Given a username 'jdoe' And a password 'letmein' When the user logs in with username and password Then the login form should be shown again(в своей статье том продолжает непосредственно выполнять эту спецификацию теста в Ruby.)
папа БДД-это Дэн Север. Вы найдете большое введение в его представляем BDD статьи.
вы найдете сравнение BDD и TDD в этом видео. Также мнение о BDD как "TDD сделано правильно" от Джереми Д. Миллер
25 марта 2013 года
видео выше отсутствует в течение некоторого времени. Вот недавний один Ллевеллин Фалько,BDD vs TDD (объяснено). Я найду его объяснения четкие и точка.
для меня основное различие между BDD и TDD-это фокус и формулировка. И слова важны для передачи вашего намерения.
TDD направляет фокус на тестирование. А поскольку в" старом водопадном мире " тесты приходят после внедрения, то такое мышление приводит к неправильному пониманию и поведению.
BDD направляет фокус на поведение и спецификацию, и поэтому водопадные умы отвлекаются. Таким образом, BDD легче понять как практику проектирования, а не как тестирование практиковать.
там, кажется, два типа BDD.
первый-это оригинальный стиль, который обсуждает Дэн Норт и который вызвал создание фреймворков стиля xBehave. Для меня этот стиль в первую очередь применим для приемочных испытаний или спецификаций против объектов домена.
второй стиль-это то, что популяризировал Дэйв Астельс, и для меня это новая форма TDD, которая имеет некоторые серьезные преимущества. Он фокусируется на поведении, а не на тестировании, а также на небольших тестовых классах, попытка добраться до точки, где у вас в основном есть одна строка для метода спецификации (теста). Этот стиль подходит для всех уровней тестирования и может быть выполнен с использованием любой существующей платформы модульного тестирования, хотя новые фреймворки (стиль xSpec) помогают сосредоточиться на поведении, а не на тестировании.
существует также группа BDD, которая может оказаться полезной:
Разработка На Основе Тестов это методология разработки программного обеспечения для тестирования, которая означает, что она требует написания тестового кода перед написанием фактического кода, который будет проверяться. По словам Кента Бека:
стиль здесь состоит в том, чтобы написать несколько строк кода, а затем тест, который следует запустить, или даже лучше, написать тест, который не будет работать, а затем написать код, который заставит его работать.
после выяснения, как написать один маленький кусочек код, теперь, вместо того, чтобы просто кодировать, мы хотим получить немедленную обратную связь и практиковать "код немного, тест немного, код немного, тест немного."Поэтому мы сразу же пишем тест на него.
таким образом, TDD-это низкоуровневая техническая методология, которую программисты используют для создания чистого кода, который работает.
Разработка На Основе Поведения - это методика, которая была создана на основе TDD, но превратилась в процесс, который касается не только программистов и тестеров, но вместо этого имеет дело со всей командой и всеми важными заинтересованными сторонами, техническими и нетехническими. BDD начал с нескольких простых вопросов, на которые TDD не отвечает Хорошо: сколько тестов я должен написать? Что я должен на самом деле проверить-и что я не должен? Какие тесты я пишу, будут на самом деле важно для бизнеса или на общее качество продукта, и только мой более-инженерии?
Как видите, такие вопросы требуют сотрудничества между технологией и бизнес. Заинтересованные стороны бизнеса и эксперты в области часто могут сказать инженерам, какие тесты звучат так, как будто они были бы полезны, но только если тесты являются тестами высокого уровня, которые имеют дело с важными бизнес-аспектами. BDD называет такие бизнес-тесты "примерами", например" расскажите мне пример того, как эта функция должна вести себя правильно", и резервирует слово" тест " для низкоуровневых технических проверок, таких как проверка данных или тестирование интеграции API. Важная часть заключается в том, что в то время как тесты могут быть созданы только программистами и тестировщиками,примеры смогите быть собрано и проанализировано всей командой поставки-конструкторами, аналитиками, и так далее.
в предложении, одно из лучших определений BDD у меня есть нашел пока что BDD-это " разговоры с экспертами домена и использование примеров для получения общего понимания желаемого поведения и обнаружения неизвестных."Часть открытия очень важна. Как команда доставки собирает больше примеров, они начинают понимать бизнес-область все больше и больше, и таким образом они уменьшают свою неопределенность в отношении некоторых аспектов продукта, с которым им приходится иметь дело. По мере уменьшения неопределенности возрастает креативность и самостоятельность команды доставки. Например, теперь они могут начать предлагать свои собственные примеры, которые бизнес-пользователи не считали возможными из-за отсутствия у них технического опыта.
теперь, имея разговоры с бизнесом и доменные эксперты звучит здорово, но мы все знаем, как это часто заканчивается на практике. Я начал свое путешествие с технологий в качестве программиста. Как программистов, нас учат написать код-алгоритмы, шаблоны проектирования, абстракции. Или, если вы дизайнер, вас учат конструкция-организуйте информацию и создавайте красивые интерфейсы. Но когда мы получаем наши рабочие места начального уровня, наши работодатели ожидают, что мы "доставим ценность клиентам.- И среди этих клиентов могут быть, например: образец... банк. Но я почти ничего не знал о банковском деле-кроме того, как эффективно уменьшить баланс моего счета. Поэтому мне придется как-то перевести то, что от меня ожидают, в код... Я должен был бы построить мост между банковским делом и моей технической экспертизой, если я хочу доставить какую-либо ценность. BDD помогает мне построить такой мост на стабильном фундаменте текучей связи между командой доставки и экспертами домена.
узнать больше
Если вы хотите узнать больше о BDD, я написал книгу на эту тему. "Написание Больших Спецификаций" исследует искусство анализа требований и поможет вам узнать, как построить большой процесс BDD и использовать примеры в качестве основной части этого процесса. В книге рассказывается о повсеместном языке, сборе примеров и создании так называемых исполняемых спецификаций (автоматизированных тестов) из примеров-методов, которые помогают командам BDD доставлять отличное программное обеспечение вовремя и на бюджет.
Если вы заинтересованы в покупке " написание больших спецификаций,"вы можете сэкономить 39% С промо-кодом 39nicieja2 :)
Я немного экспериментировал с подходом BDD, и мой преждевременный вывод заключается в том, что BDD хорошо подходит для реализации прецедента, но не для основных деталей. TDD все еще качается на этом уровне.
BDD также используется в качестве средства связи. Цель состоит в том, чтобы написать исполняемые спецификации, которые могут быть поняты экспертами домена.
Мне кажется, что BDD-это более широкий охват. Это почти означает, что используется TDD, что BDD-это всеобъемлющая методология, которая собирает информацию и требования для использования, помимо прочего, практики TDD для обеспечения быстрой обратной связи.
с моими последними знаниями в BDD по сравнению с TDD BDD фокусируется на определении того, что произойдет дальше, тогда как TDD фокусируется на настройке набора условий, а затем смотрит на результат.
BDD в значительной степени TDD сделано правильно. Тем не менее, есть дополнительное значение, которое предлагает BDD. Вот ссылка на это:
разработка, основанная на поведении, кажется, больше сосредоточена на взаимодействии и коммуникации между разработчиками, а также между разработчиками и тестировщиками.
статья Википедии имеет объяснение:
не практикуя BDD себя, хотя.
рассмотрим основное преимущество TDD, чтобы быть дизайн. Его следует назвать тест-драйв дизайн. БДД является подмножеством ТДД назвать его поведение управляемая конструкция.
Теперь рассмотрим популярную реализацию TDD-модульного тестирования. Единицы в модульном тестировании обычно представляют собой один бит логики, который является самой маленькой единицей работы, которую вы можете сделать.
когда вы объединяете эти блоки функциональным способом, чтобы описать желаемое поведение для машин, вам нужно понять поведение вы описываете машину. Дизайн, основанный на поведении, фокусируется на проверке понимания разработчиками вариантов использования/требований/чего бы то ни было и проверяет реализацию каждой функции. BDD и TDD в целом служат важной цели информирования дизайна и второй цели проверки правильности реализации, особенно когда она изменяется. BDD done right включает в себя biz и dev (и qa), тогда как модульное тестирование (возможно, неправильно рассматривается как TDD, а не один тип TDD) обычно делается в силосе dev.
Я бы добавил, что тесты BDD служат жизненными требованиями.
вот быстрый снимок:
TDD-это просто процесс тестирования кода перед его написанием!
DDD-это процесс информирования о домене перед каждым циклом касания кода!
BDD-это реализация TDD, которая привносит некоторые аспекты DDD!
надеюсь, что это поможет!
разница между тестовой разработкой (TDD) и поведенческой разработкой (BDD)
BDD фокусируется на поведенческом аспекте системы, а не на
аспект реализации системы, на котором фокусируется TDD.BDD дает более четкое представление о том, что должна делать система
с точки зрения разработчика и заказчика. Только TDD
дает разработчику понимание что должна делать система.БДД позволяет как разработчику, так и заказчику совместно с анализ требований, который содержится в исходном коде система.
нет никакой разницы между TDD и BDD. кроме того, вы можете читать свои тесты лучше, и вы можете использовать их в качестве требований. Если вы пишете свои требования с теми же словами, что и тесты BDD, то вы можете прийти от своего клиента с некоторыми из ваших тестов, определенных готовым к написанию кода.
выбор между TDD и BDD является сложным. Это зависит от того, есть ли соответствующая структура тестирования для вашего данного целевого языка, что ваши коллеги удобны, а иногда и другие факторы.
некоторые утверждают, что BDD всегда лучше, чем TDD, потому что он имеет возможность устранения проблем, которые могут возникнуть при использовании TDD.
ключ к BDD заключается в том, что он может предотвратить проблемы; это не гарантировано. Такие проблемы, как плохая организация кода, плохая практика проектирования и т. д. будет по-прежнему сохраняться. Вы просто будете иметь более низкую вероятность написания плохих тестов и, следовательно, иметь более надежные функции.
этот блог предоставляет интересную точку зрения на различия между TDD, BDD и ATDD: http://assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/
Comments