Один из самых некорректно используемых подходов в разработке - это BDD (Behavior Driven Development). Обиднее всего то, что за ним стоит прекрасная задумка, которая при правильной реализации дает много преимуществ. В помощь разработаны инструменты для разных языков программирования, которые облегчают техническую часть подхода. И при этом большая часть людей делает из него бессмысленный процесс, отнимающий время и не приносящий ровным счетом ничего.
Давайте начнём с задумки. Как следует из названия, BDD является подходом к РАЗРАБОТКЕ (а НЕ к тестированию), который основывается и базируется на сценариях использования системы. Изначально, сценарии использования знают только представители бизнеса. Поэтому на первом этапе они формализуются и обсуждаются совместно с инженерами из команды разработки. Формализация нужна для единого подхода к документированию сценариев, упрощению формата для избежания субъективных интерпретаций. Также, специфический формат помогает легче автоматизировать сценарии и превратить их в исполняемую документацию.
То есть, ключевая роль сценариев - задать четкие, понятные и согласованные критерии для команды разработки. Имея в наличие сценарии, команда разработки идёт реализовывать функциональность системы и автоматизировать сценарии для получения «живой документации». И тут очень важным становится второй принцип BDD: сценарии должны описывать поведение системы, а не техническую реализацию. В них не должно быть кнопок, API вызовов, БД и других технических терминов. Почему? Да для того чтобы снизить стоимость поддержки при развитии системы. Ведь бизнес сценарии меняются куда реже чем техническая реализация конкретной функции системы.
Что же мы видим в реальной жизни:
- бизнес не привлекается к формулировке сценариев, это делают тестировщики постфактум;
- разработчики вообще не используют сценарии в своей работе;
- инструменты из мира BDD применяются для тестирования API, UI и других технических моментов;
- сценарии пишутся как карго-культ и никто не может объяснить как они помогают и какую функцию несут;
- сценарии начинают напоминать обычный тест, но формализованный под формат given-when-then...
Вот вам пример статьи на тему нелепости использования BDD инструментов для API тестов:
https://www.stickyminds.com/article/why-you-shouldnt-use-cucumber-api-testing.
#tests #testing #тестирование