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