Я новичок в BDD, но мне это показалось очень интересным, и я хочу разработать свой следующий проект с использованием BDD. После поиска в Google и просмотра скринкастов у меня все еще остается много вопросов о BDD в реальной жизни.
1. Декларативные или императивные сценарии?
Большинство сценариев «дано когда-то», которые я видел, были написаны в терминах пользовательского интерфейса (императивный).
Scenario: Login
Given I am on the Login-page
When I enter 'AUser' in the textbox 'UserName'
And I enter 'APassword' in the textbox 'Password'
And I click the 'Login' button
Then I should see the following text 'You are logged in'
Я нашел эти тесты чрезвычайно хрупкими, и они ничего не говорят о коммерческой ценности нажатия на кнопки. Я считаю его кошмаром. Почему в большинстве примеров используются императивные сценарии?
Scenario: Login (declarative)
Given I am not logged in
When I log in using valid credentials
Then I should be logged in
Если вы предпочитаете декларативный стиль, как вы описываете такие вещи, как «Домашняя страница» или «Страница продуктов»?
2. Выполнять UI или нет?
Большинство реализаций шагов, которые я видел, использовали WatiN, White или что-то подобное для реализации сценариев с точки зрения пользователя. Запускаем браузер, нажимаем кнопки. Я считаю его чрезвычайно медленным и хрупким. Что ж, я могу использовать что-то вроде объекта Page, чтобы сделать тесты менее хрупкими. Но это другой объем работы. Специально для настольных приложений со сложным пользовательским интерфейсом.
Как вы реализуете сценарии в реальных проектах - используя пользовательский интерфейс или тестируя контроллеры / презентаторы?
3. Настоящая база данных или нет?
Когда данная часть сценария реализована, часто требуются некоторые данные, которые должны быть в системе (например, некоторые продукты для приложения магазина).Как вы реализуете эту часть - добавляя данные в реальную базу данных (полное сквозное тестирование) или предоставляя заглушки репозитория для контроллеров?
Жду ответов от опытных!
ОБНОВЛЕНИЕ: Добавлены полезные ссылки по вопросам.