Внешний BDD (со Specflow)

Я новичок в 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. Настоящая база данных или нет?

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

Жду ответов от опытных!

ОБНОВЛЕНИЕ: Добавлены полезные ссылки по вопросам.

41
задан Sergey Berezovskiy 4 November 2011 в 08:36
поделиться