Переходить на BDD или нет? |
11.09.2023 23:59 |
Автор: Баз Дейкстра (Bas Dijkstra). BDD как техника существует много лет, но ее до сих пор понимают неправильно. В статье я хочу обсудить и развенчать два таких заблуждения. Заблуждение №1: есть один-единственный правильный подход к BDD Нет, это не так. Я верю, что существует некий «традиционный» процесс BDD, и мы следуем ему в ходе курса, но это не значит, что вам везде и всюду нужно следовать этому процессу побуквенно. Ровно наоборот! Как и ряд других методологий, BDD применима различными способами, в зависимости от структуры вашей компании и команды, опыта работы с BDD, совокупным командным навыкам, и т. п. Мне нравится представлять BDD, как набор инструментов, из которого мы берем то, что нам, в нашем конкретном контексте, сейчас необходимо, и оставляем то, что не требуется. Попытка тщательно следовать традиционному процессу может для вас сработать, но с шансами будет ощущаться чем-то неестественным, навязанным, и «просто каким-то не таким». Это вполне понятно – все команды и контексты уникальны. Поэтому смело экспериментируйте с тем, что работает и что нет, не бойтесь отбрасывать нерабочее. Экспериментируйте, обучайтесь и подстраивайтесь, пока не найдете способ применения BDD, который подходит именно вам. Я снова и снова повторяю, однако, что первая стадия процесса (стадия обнаружения) – самая важная. Даже если вы решите полностью отказаться от BDD как процесса для ваших практик разработки, вам может пригодиться стимулирование обсуждений, необходимых для этой стадии, дабы:
Вы можете полностью отказаться от описания ожидаемого поведения в формате Gherkin «Если – Когда – Тогда», и не создавать автоматизированные приемочные тесты на этом основании, но техники стадии обнаружения пригодятся практически любой команде, вне зависимости от ее процессов специфицирования / очистки / дизайна. Заблуждение №2: BDD – это только автоматизация Последний момент подводит нас ко второму заблуждению о BDD, о котором я хочу поговорить – к идее, что в BDD все крутится вокруг автоматизации. Я сталкивался с множеством команд, утверждающих, что практикуют BDD, хотя на самом деле они просто наклеивают слой абстракции с «Если – Когда – Тогда» поверх своей автоматизации при помощи таких инструментов, как Cucumber и SpecFlow. Превращение примеров и спецификаций в автоматизированные приемочные тесты – это, конечно, важная часть BDD, но она далеко не единственная. Как я говорил ранее, BDD – это в первую и главную очередь техника, упрощающая коммуникацию и нацеленная на единодушное понимание, что именно должно делать наше ПО. Внедряя только автоматизационную часть BDD-процесса, вы пропускаете этот момент, и, следовательно, возможность для команды плыть на одной волне и снизить риски ошибочных интерпретаций, недопониманий и ложных предположений о поведении ПО. К тому же простое добавление слоя Gherkin к коду автотестов зачастую не несет почти никакого смысла, особенно если учитывать потраченные на его создания и поддержку усилия. В этом случае слой Gherkin, внедренный при помощи Cucumber или SpecFlow – просто еще одна абстракция поверх вашего кода. И как и в случае с любым уровнем абстракции, существует он, как правило, за счет гибкости (слой абстракции лишает вас ряда возможностей) в пользу простоты использования (слой абстракции делает код читабельнее и проще в написании). Я уже писал про слои абстракции, и хоть та статья больше концентрировалась на codeless-инструментах, Gherkin, примененный только в фазе автоматизации – просто еще один пример такого слоя абстракции, причем даже не наиболее полезный или мощный. Вообще я полагаю, что практически все «фреймворки тест-автоматизации», использующие Gherkin-инструменты вроде Cucumber и SpecFlow, не поддерживаемые важными для BDD обсуждениями, куда лучше справятся без этого слоя. Иными словами Gherkin – плохой (если честно – ужасный) вариант, если вы хотите применять его в качестве псевдо-языка программирования. Однако, возразите вы, я хочу, чтобы люди понимали, что делают мои приемочные тесты! Отвечу: возможно, этого можно добиться куда более подходящими способами. Вот мои рекомендации:
Вкратце: без основополагающих для BDD обсуждений не беритесь за приделывание Gherkin поверх всего и вся. |