Если вы можете извлечь сценарии из описания, все готово.
Анти-паттерн, который я часто вижу в BDD, - люди, чувствующие необходимость подробно обсудить и записать каждый сценарий.
Некоторые сценарии настолько хорошо поняты, что достаточно извлечь их из краткого описания. Например, если я скажу: «Мне нужна функция входа на этой неделе», вы знаете, как это должно выглядеть. Вы знаете, что есть сценарии для правильного пароля, неправильного пароля, неправильного имени пользователя. Нам на самом деле не нужно обсуждать их или фиксировать их подробно.
Точно так же я мог бы сказать: «Вот форма для регистрации пользователей. Мы должны иметь возможность создавать новых пользователей, позволять им редактировать свои данные и удалять себя, за исключением того, что удаление не должно фактически удалять, оно должно просто пометить их как удаленных так что они могут восстановить свои учетные записи, если они хотят. "
И вы можете спросить: «Является ли восстановление учетной записи частью этой функции?»
«Они могут быть двумя функциями, если хотите.»
«Хорошо, у нас есть сценарии для создания, чтения, обновления, удаления; это должно быть достаточно просто. Давайте поговорим о восстановлении учетной записи; это звучит более интересно».
В общем, если описание поведения достаточно для разработки сценариев командой разработчиков, вам не нужно обсуждать их. Вы можете сделать это, если есть какие-либо сомнения, но вы можете просто захотеть захватить, какие сценарии вам нужно запомнить, если вы вообще их захватите.
Если вы никогда не делали этого раньше или сомневаетесь, обсудите сценарии.
Сосредоточьтесь на необычных областях, особенно если есть функции, которые вы никогда не делали раньше. Это фантастические места, где можно пообщаться и записать любые неожиданные примеры. У меня обычно есть два вопроса, которые я задаю, основываясь на шаблоне BDD:
При наличии контекста.
Когда происходит событие,
тогда должен произойти результат.
- Есть ли какой-то другой контекст, который для того же события приводит к другому результату?
- Есть ли другой результат, который также важен?
Если все за столом выглядят скучно, функция, с которой вы разговариваете, вероятно, понятна. Часто достаточно сказать: «Это должно работать как X , но вместо Y ». Это то, что Дэн Норт называет « пирог с имбирем» ; это как рецепт шоколадного торта, но с имбирем вместо шоколада.
Даже если заинтересованная сторона может самостоятельно определить сценарии, для команды разработчиков действительно важно иметь возможность говорить с ним, подбирать и усваивать его язык. Этот язык затем переносится в код, позволяя им лучше общаться в будущем и помогая новичкам в проекте понять, что происходит. Если разработчики не говорят на языке, они не будут им пользоваться .
Если заинтересованная сторона или аналитик на самом деле не хочет тратить время на то, чтобы записать что-то во время сеанса, я бы предпочел, чтобы разработчики записали сценарии в сотрудничестве с тестировщиками, а затем попросили его рассмотреть его. Это более вероятно, чтобы обнаружить недоразумения, чем наоборот.
Иногда BDD не работает.
Другая возможность состоит в том, что вы найдете сценарий, в котором заинтересованная сторона не уверена. «О, я не думал об этом! Я не уверен». Вместо того, чтобы пытаться пригвоздить бизнес и наказать его с уверенностью, возможно, на этом этапе стоит отказаться от BDD и попробовать что-то простое, чтобы получить некоторую обратную связь и дать бизнесу то, что они могут повторить. Не усложняйте изменения и пишите сценарии, как только есть лучшее понимание того, что происходит.
BDD, сделанный хорошо, может действительно помочь обнаружить места неопределенности. Поскольку каждый проект, который стоит сделать, имеет какой-то новый аспект и никогда не был реализован раньше, здесь есть некоторая неопределенность. Если вы сосредоточитесь на использовании сценариев, чтобы помочь преднамеренно обнаружить невежество , вы научитесь быстрее, и обучение обычно занимает большую часть времени, затрачиваемого на проект.
Кроме того, я обнаружил, что чем больше групп разработчиков сотрудничают таким образом, тем больше бизнес готов доверять им с неопределенностью, и тем больше инноваций начинает происходить. Инновационные компании, по своей природе, имеют много неопределенности в своих проектах.
Некоторое время назад я написал сообщение в блоге о Cynefin , которое, как мне кажется, действительно помогает мне понять, где беседы будут наиболее эффективными. Если вы прочитаете это и поймете четыре домена, вот правила, которые я использую:
Простые и сложные вещи (известные) часто понятны, и вам не нужно подробно рассказывать о сценариях.
Очень сложный материал (неизвестно) вообще не понят. Вы можете узнать это, поговорив по сценариям. Отсутствие определенности означает, что BDD здесь не будет работать, поэтому итерируйте что-то, что легко изменить, и получите быструю обратную связь. Любая практика, которая сохраняет ваши настройки, например, тестирование AB, также хороша в этом пространстве.
BDD блестяще работает в промежуточном (познаваемом) пространстве как механизм передачи знаний и раскрытия двух других пространств. Это не молоток, и не все это гвоздь. На самом деле, если вы можете сосредоточить время на разговорах на чем-либо, дело не в примерах, которые вы можете найти; речь идет о поиске примеров, которые вы не можете .