Какой уровень детализации для сценариев BDD?

Уместно ли для сценариев BDD иметь специфичность стиля «нажмите здесь»?

Я читал множество примеров, в которых сценарии описываются так, чтобы избежать какого-либо конкретного взаимодействия с пользовательским интерфейсом, но такие инструменты, как SpecFlow, по-видимому, требуют такого уровня детализации.

Уместно ли требовать от БА написать историю, содержащую сценарии на высоком уровне, а затем проработать их до более технического (и специфического для элементов) уровня на этапе 3 amigos?

Например, уместно ли это:

Given the user is on /search
And the "Jeff" is entered into the field "searchinput"
When the "Search" button is clicked
Then the page displayed is /results/Jeff
And the fields displayed include "Name"
And the second field displayed is "Post Code"

Пример истории и пример инструмента на этой странице кажутся несовместимыми, если мы пытаемся перейти от одного к другому (игнорируя тот факт, что они находятся в очень разных бизнес-процессах): https://en.wikipedia.org/wiki/ Развитие, управляемое поведением

Я бы сказал, что детализация сценариев BDD должна быть на том уровне, где бизнес-ценность отображается хорошо и понятно для деловых людей. Глубже этого может быть важно для технарей. Это абстракция. Но если вы автоматизируете эти сценарии, вы должны сделать их более подробными, чтобы иметь возможность повторно использовать шаги и снизить стоимость обслуживания.
Спасибо. Для нетехнических деловых людей, пишущих эти истории, и технических разработчиков, выполняющих работу, в какой момент и как этот разрыв устраняется?
Я считаю, что это зависит от случая к случаю. Я знаю деловых людей, которым удобно иметь больше деталей, и я также знаю деловых людей, которые этого не делают. Нам нужно найти правильный баланс, чтобы сделать нашу работу по доставке и сделать их счастливыми.

Ответы (1)

Ваш уровень поведения правильный. Большинство практиков (включая меня) порекомендовали бы вам сформулировать его таким образом, который менее специфичен для реализации. Например:

Given the user is on the search page 
When the user searches for "Jeff"
Then the results page is displayed
And the "Name" field is displayed with the value "Jeff"
And the "Post Code" field is displayed with the value "80273"

Это не зависит от реализации, что означает, что вам не нужно заранее знать реализацию, и вы можете более легко решать несколько реализаций (например, веб и мобильные).

Я также изменил формулировку, чтобы ее было легче автоматизировать. Если тест пишет PO или какой-то другой нетехнический человек, я не ожидаю, что они узнают о некоторых из этих изменений. Я ожидаю, что разработчики признают их и помогут там. В частности, последние две строки теперь представляют собой один и тот же шаблон, и их легче автоматизировать, и весь сценарий можно было бы запустить с большим количеством различных значений, подставленных для каждого из этих элементов в кавычках очень аккуратно.

Наконец, вы спросили в комментарии, как вы преодолеваете разрыв. Я рекомендую написать тестовый пример до того, как вы узнаете о реализации. Это заставляет вас в большей степени использовать этот язык, не зависящий от реализации.

Спасибо. Меня беспокоит то, что я пишу эти истории в (довольно) отличной среде от той, в которой я работал раньше. Основная проблема в том, что люди, которые знают системы наизнанку, являются бизнес-аналитиками, а не Agile. Разработчики, которые (в основном) agile, не знают системы. Моя цель — использовать скрам, чтобы помочь всем учиться и при этом быть продуктивным. (Возникают типичные проблемы, как, я уверен, вы можете себе представить.)