Как стать автором
Обновить

Комментарии 23

Имхо, BDD было модным словом лет 7-8 назад…
А по отличиям всё просто: есть такая штука, функциональная спецификация называется, это документ, согласно которому составляется тест-план приёмочного тестирования. BDD призван автоматизировать этот процесс.
А TDD работает на уровне юнит-тестов, т.е. помогает продумывать детали реализации и отлавливать ошибки на этом уровне.

Ээээ…
TDD — тесты вперед кода.
BDD — опиши чего ты хочешь, как пользователь, чтобы код понял даже не разработчик.

Чего тут путать то?
А еще есть ATDD=TDD+BDD, и вот ATDD часто тоже называют BDD и вследствие этого путают BDD с TDD.
В разработку сценариев BDD вовлечены не только тестировщики, необходимость в автоматизаторах сохраняется?

Не очень понял вопроса, а следовательно и ответа. Разве текст behavior-тестов (по статье ощущение, что они прямо на русском пишутся, так?) не является артефактом работы автоматизатора тестирования? Вместо ручного прохождения сценария "по бумажке" автоматизатор пишет тест и настраивает/запускает его прогон? Или теперь написание автотестов не входит в основные обязанности автоматизаторов тестирования?

В случае с BDD обязанность писать автотесты переходит на ручных тестировщиков — они пишут сценарии, состоящие из шагов. Автоматизатору остается только имплементировать конкретные шаги, если их не существовало ранее. Количество работы для автоматизатора значительно сокращается. Во всяком случае у нас был именно такой опыт, и был он весьма успешным.

То есть по сути это ручные тестировщики начали заниматься азами автоматизации тестирования )

А разбор ошибок запуска? Особенно первого запуска?
Понятное дело, что если шаг имплементируется в первый раз, то он отлаживается автоматизаторами. А вот если сценарий составляется из уже готовых шагов — то это задача только ручного тестировщика. К автоматизаторам в этом случае приходят только шаги начинают работать не так, как ожидается. А так — если в какой-то момент возникла ошибка — то если это просто фэйл теста — то сценарий воспроизведения можно после ревью ручными тестировщиками сразу отдавать разработчикам. Если же возник дефект самого теста — то автоматизаторам. У нас было как-то примерно так.
Мануальные тестировщики пишут багрепорты на неправильные степы?
Не совсем понял, что вы имеете ввиду под неправильным степом, можете уточнить? Это сам степ не работает так, как описано, или степы работают, но валится тест или как?

Вы тоже это заметили? (про вопрос)
Дело в том, что в Альфа-Лаборатории написанием BDD-историй (feature/story-файлов) занимается именно аналитик-тестировщик, но никак не автоматизатор. Автоматизатор может быть привлечен на стадии старта проекта, когда возникают сложные ошибки, когда требуется написать сложный шаг на Java, обучить тестировщика писать простые шаги на Java и все. Сам же тестировщик-аналитик является частью скрам-команды, поэтому он может смело обращаться за помощью к ней же и с учетом того, что многие команды у нас практикуют парное программирование, помощником может стать любой разработчик или же системный аналитик.


Автоматизатор же в свободное от помощи и обучения тестировщиков время занимается у нас задачами по инфраструктуре в тестировании, интеграцией со сторонними и собственными решениями, созданием и поддержкой инструмента автоматизации UI тестов.

получать новую документацию налету, хранить ее вместе с проектом, что позволило приблизить аналитиков и тестировщиков к коду

Подскажите пожалуйста, это пользовательская документация или набор given when then?

Смотря с какой стороны посмотреть. Да, это Given When Then, но если правильно структурировать, согласовать формат плюс добавить asciidoc, то и пользовательская документация тоже.

Вообще по опыту — иногда качественно составленный и структурированный набор тестов помогает разобраться в программе лучше, чем оригинальная документация. Как на мой взгляд — тесты — это по сути еще один вид документации.

мне нравится проект picklesdoc.com. Там как раз таки идея в том чтобы использовать gherkin сценарии как способ ведения документации по проекту. Очень много плюсов в плане того что эта документация реже будет выходить из синхронизации с реализацией.

понятно, а есть реальный опыт (положительный/отрицательный) в использовании такой документации конечными пользователями продукта? Или пока это больше для внутренних нужд.
целью которого является удешевление реализации новых фич

ну вообще уменьшение издержек связанных со стоимостью перевода требований из языка бизнеса в язык понятный разработчику. Просто "удешевление" звучит слишком просто.

TDD и BDD путают, потому что BDD фреймворки так и норовят сказать что они является эволюционным шагом от TDD. Открываем JBehave:
JBehave is a framework for Behaviour-Driven Development (BDD). BDD is an evolution of test-driven development (TDD)

Не совсем понимаю роль BDD в данном описанном случае, возможно не хватает примеров, но видимо их покажут только на конференции. Автоматизаторы общаются с Бизнесом, синхронизируют понятия, составляют сценарии, а дальше садятся и пишут обычные такие автотесты. Автотесты содержат некоторый код, который что-то вызывает, что-то проверяет, но это код дописанный вручную.
Красивые примеры BDD описаний выглядят красиво в виде сценариев, но в итоге их перегоняют в обычный код автотестов (а иногда очень избыточный и многословный, как пример с Tooling examples).

Сама идея нормального структурированного описания сценариев — полезна, это самый адекватный способ прописать Acceptance Criteria для задачи.
НО перегонку в код всё равно будет выполнять Автоматизатор (с навыками программиста), который довольно быстро (на мой взгляд) упрется в ограничения фреймворков и устанет от еще одного DSL-языка.
При этом, мануальные Тестировщики и Аналитики, как и раньше — не будут смотреть код, оперируя лишь сценариями.
упрется в ограничения фреймворков и устанет от еще одного DSL-языка.

на самом деле нет, он то не будет работать с этим DSL. Задача автоматизатора в этом плане реализовать стэпы. И да, их будет очень много. А все дублирование можно в реализации стэпов спрятать.

немного расширю свой комментарий...


TDD и BDD путают, потому что

потому что когда разработчики знакомятся с BDD слишком много внимания уделяется тестированию а не тому, ради чего BDD собственно задумывалось.


возможно не хватает примеров, но видимо их покажут только на конференции.

на главной странице сайта вполне себе неплохой пример.


Автоматизаторы общаются с Бизнесом, синхронизируют понятия, составляют сценарии

не совсем. Автоматизаторы уже реализуют стэпы, но в формировании сценариев участвовать должны все. Идея в том что бизнес тоже участвует в формировании сценариев. Как минимум читает эти сценарии и может приводить свои примеры требуемого поведения.


но в итоге их перегоняют в обычный код автотестов

в контексте реализаций стэпов — да. Сами сценарии от этого не должны сильно меняться. Они должны оставаться понятными всем членам команды и стэкхолдерам, и как и в любом способе описания требований, максимально абстрагироваться от конкретных деталей вроде деталей UI.


При этом, мануальные Тестировщики и Аналитики, как и раньше — не будут смотреть код, оперируя лишь сценариями.

а зачем аналитикам/мануальным тестировщикам код смотреть? Им как раз сценарии и нужны. Тестировщикам еще полезно знать как чего реализовано чтобы свою работу оптимизировать, но это уже реализация системы а не тесты.

Классное название придумали: из него сразу следует, что TDD — это НЕрабочий метод… Мда…
Cucumber+Protractor отлично работают в Angular2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий