В чем разница между "особенностью" и "историей" в разработке, управляемой поведением?

Я работаю над продуктом и использую Pivotal Tracker для написания пользовательских историй, но я довольно плохо знаком с BDD и XP и новее для Cucumber. Так что я немного запутался в терминологии. В чем разница между историей и огурцом? Оба представляют собой простые описания, состоящие из трех частей - актер, действие и бизнес-ценность. Правильно? Так что, если у меня уже есть история, написанная в Pivotal Tracker, я должен просто скопировать ее прямо в функцию Cucumber? Может ли одна история иметь несколько функций?

Как вы думаете?

3 ответа

Решение

Функция - это полноценный функционал, готовый к запуску. Например, функция может быть профилем пользователя, дополненным страницей регистрации, проверкой, фотографиями и т. Д.

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

На создание некоторых более сложных функций могут уйти недели, с учетом архитектуры, новых технологий, изучения предметной области и т. Д., Поэтому история позволяет нам быстрее получать отзывы.

Возможно, вам будет интересно узнать о Feature Injection - BDD в пространстве анализа. Мы довольно часто используем шаблон как для историй, так и для функций:

In order to <achieve a goal>
As <the stakeholder who wants the goal>
I want <something>

Я не слишком беспокоюсь о том, что я делаю, - о том, что я делаю, - о том, что я делаю, или о сюжете, пока я получаю обратную связь как можно быстрее.

"История" - это серия задач развития, которые вместе достигают цели. Это устройство, используемое разработчиками.

"Функция" - это, в общем-то, функция, которую заинтересованные лица хотят видеть в своем приложении. Для реализации функции вам может понадобиться одна или несколько историй, поскольку обычно, если история "слишком большая", она разбивается на более управляемые меньшие истории.

BDD - это вариант TDD (разработка через тестирование). Насколько я понимаю, семантика BDD менее ориентирована на реализацию, чем семантика TDD, в которой вы используете фразы, такие как "система должна загружать пользователя" вместо "пользовательский экземпляр не должен быть нулевым после загрузки DAO" - они описывают поведение системы (набор функций) в отличие от конкретных деталей фактической реализации. В конце концов, все они проверяют одно и то же, если все сделано правильно.

И, по сути, концепция истории действительно ортогональна BDD; Существуют практики разработки, которые имеют Истории и не имеют BDD.

К сожалению, функция в этом пространстве сильно перегружена, а функция огурца - это совсем не то, что полноценная функциональность.

Самое интересное отличие между "Огурцовым компонентом" и "Пользовательской историей" заключается в том, что "Пользовательская история" является историческим документом, в то время как "Функция" описывает текущее состояние приложения (при условии, что эта функция была реализована).

Эта разница (ИМО) гораздо важнее, чем различия в гранулярности или размере. У вас может быть функция Cucumber, которая вдохновлялась / вдохновлялась многими пользовательскими историями, и у вас может быть одна пользовательская история, которая имеет много функций Cucumber.

Как только функция Cucumber может быть запущена, это код. Это означает, что он гораздо более подвержен рефакторингу и изменению. Каждый раз, когда вы запускаете его, он дает вам информацию о текущем состоянии вашего приложения. Пользовательская история рассказывает о том, что должно делать ваше приложение. Или, может быть, более точно, что авторы истории думали, что ваше приложение должно делать во время написания истории.

Другие вопросы по тегам