BDD-тесты существуют на разных уровнях детализации, вплоть до первоначального видения проекта. Большинство людей знают о сценариях. Несколько человек помнят, что BDD начинался со слова «следует» как замена «теста» JUnit - как замена TDD. Причина, по которой я помещаю «тесты» в кавычки, заключается в том, что BDD на самом деле не касается тестирования; он сосредоточен на поиске мест, где нет или нет понимания.
Из-за этого внимания разговоры намного важнее инструментов BDD.
Я собираюсь сказать это снова. Разговоры гораздо важнее инструментов BDD.
Приемочное тестирование фактически не требует разговоров, и обычно работает исходя из предположения, что тесты, которые вы пишете, являются правильными тестами. В BDD мы предполагаем, что не знаем, что делаем (и, вероятно, не знаем, чего не знаем). Вот почему мы используем такие вещи, как «Дано, Когда, Тогда» - чтобы мы могли вести беседы вокруг сценариев и / или примеров на уровне единиц. (Это два уровня, с которыми знакомы большинство людей - эквивалент приемочных испытаний и модульных тестов, - но он идет вверх по шкале).
Мы не называем их «приемочные тесты», потому что вы не можете спросить делового человека «Пожалуйста, помогите мне с моим приемочным тестом». Они будут смотреть на тебя очень странным, косоглазым взглядом, а затем уволят тебя как эту чудовищную девушку . 93% из вас этого не хотят.
Попробуйте "Я хотел бы поговорить с вами о сценарии, где ..." вместо этого. Или "Можете ли вы дать мне пример?" Любой из них хорош. Называя их «Приемочные тесты», люди начинают думать, что вы на самом деле проводите тестирование, что подразумевает, что вы знаете, что делаете, и просто хотите убедиться, что вы это сделали. В этот момент разговоры, как правило, фокусируются на том, как быстро вы можете получить неправильную вещь, а не на том факте, что вы получаете неправильную вещь.
И вы получаете не ту вещь. Действительно, если честно, вы. Даже если вы думаете, что это не так, это только потому, что вы не понимаете невежество второго порядка. Вы не знаете, что вы не знаете, и это нормально, если вы нашли места, где вы могли бы знать, что вы не знаете. (Вы не найдете их всех. Не позволяйте парадоксу категоризации держать вас в ночное время.)
Единственный способ действительно сделать это правильно - это получить все требований заранее, и вы знаете, что происходит, когда вы пытаетесь это сделать. Вот так. Это Водопад . Помните сверхурочное время? Выходные работают? Семь лет, в течение которых ни одна вещь, которую вы создали, не попала в производство? Если вы хотите избежать этого, у вас есть только один шанс: предположите, что вы не правы, поговорите об этом, чтобы быть менее неправильным, а затем признайте, что вы все еще не правы, и все равно сделайте это. Слишком раннее написание тестов означает, что у вас есть даже больше шансов ошибиться, и теперь сложнее измениться, и все думают, что вы правы, а премьер-министр измеряет вашу скорость, и теперь вы решили не ошибаться еще 2 недели. И, что еще хуже, ты тоже собираешься проверить, что ты не прав.
Еще раз. Разговоры гораздо важнее инструментов BDD.
Пожалуйста, пожалуйста, не зацикливайтесь на инструментах. Инструменты - это всего лишь механизм для захвата разговоров и обеспечения того, чтобы они воспроизводились в коде. Сценарии не являются заменой для разговоров, более чем учетная карточка 3 x 5 является заменой требований.
Сказав, что, если вы должны начать с инструмента, поставьте Slim за Fitnesse, чтобы он мог прекрасно работать с заданным моментом, когда не нужно возиться со столами и приборами Fit. GivWenZen основан на Слиме, и любой из них качается. FitSharp - это эквивалент для тех, кто работает в .NET. Или просто используйте Cucumber, или SpecFlow, или , подберите небольшой пользовательский DSL *, который будет хорошо работать в течение многих лет.
Прозрачность: * Я написал это. И кусочки JBehave. Хотелось бы, чтобы мы назвали это "Не концентрируйся на BDD-tools-Behave". Я мог бы быть сильно вовлечен в другие биты BDD. Кроме того, Дэн Норт купит мне пинту, если я смогу передать это сообщение, так что это не совсем беспристрастный совет.
Независимо - разговоры уже есть. Это просто люди. Иди поговори.