Действительно ли BDD применим на уровне пользовательского интерфейса?

BDD — это методология «снаружи -внутри» , что, как я понимаю, означает, что вы начинаете с того, что знаете. Вы пишете свои истории и сценарии, а затем реализуете самые внешние объекты предметной области, двигаясь «внутрь» и «преднамеренно» обнаруживая соавторов по мере продвижения --вниз по уровням обслуживания, уровням предметной области и т. д. Для соавтора, которого еще не существует., вы издеваетесь (или «притворяетесь» ), пока не сделаете это. (Я украл некоторые из этих терминов прямо у Дэна Норта и Кента Бека ).

Итак, как пользовательский интерфейс вписывается в это?

Заимствуя из одной из записей в блоге Норта , он переписывает это:

Given an unauthenticated user
When the user tries to navigate to the welcome page
Then they should be redirected to the login page
When the user enters a valid name in the Name field
And the user enters the corresponding password in the Password field
And the user presses the Login button
Then they should be directed to the welcome page

в это:

Given an unauthenticated user
When the user tries to access a restricted asset
Then they should be directed to a login page
When the user submits valid credentials
Then they should be redirected back to the restricted content

Он делает это, чтобы исключить язык из -не относящихся к делу областей, одной из которых является пользовательский интерфейс (. «Поле имени», «Поле пароля», «Кнопка входа»). Теперь пользовательский интерфейс может измениться, и история (или, скорее, смысл истории)не ломается.

Итак, когда я пишу реализацию для этой истории, я использую пользовательский интерфейс или нет? Лучше запустить браузер и выполнить «пользователь отправляет действительные учетные данные» с помощью теста Selenium или напрямую подключиться к базовой реализации (, такой как служба аутентификации )? Кстати, я использую jBehave в качестве BDD-фреймворка, но с таким же успехом это могут быть Cucumber, rSpec или ряд других.

Я склонен не тестировать пользовательский интерфейс в автоматическом режиме и с осторожностью отношусь к инструментам автоматизации графического интерфейса, таким как Selenium, потому что считаю, что тесты (1 )могут быть слишком ненадежными и (2 )выполняются там, где стоимость исполнения самая большая. Поэтому я склоняюсь к тому, чтобы вручную протестировать пользовательский интерфейс на эстетику и удобство использования, а бизнес-логику оставить на более низком уровне.более легко автоматизируемые слои. (И, возможно, слои с меньшей вероятностью изменятся.)

Но я открыт для обращения в этом. Итак, BDD для пользовательского интерфейса или нет?

PS. Я прочитал все сообщения на SO, которые я мог найти по этой теме, и ни один из них не касается моего вопроса. Этот ближе всего, но я не говорю о том, чтобы выделить пользовательский интерфейс в отдельную историю; скорее, я говорю о полном игнорировании этого для целей BDD.

23
задан Community 23 May 2017 в 12:31
поделиться