Разработка на основе поведения (Behavior-driven development, BDD)
Разработка на основе поведения или разработка через поведение (Behavior-driven development, BDD) — это подход к разработке программного обеспечения, целью которого является улучшение взаимодействия и взаимопонимания между разработчиками, тестировщиками и другими заинтересованными сторонами, не являющимися техническими специалистами. Данный подход фокусируется на определении поведения системы с точки зрения ее целей, прикладной функциональности и ожидаемых результатах, а не просто на указании ее входных и выходных данных. BDD акцентируется на совмещении в процессе разработки чисто технических интересов и интересов бизнеса, позволяя тем самым менеджерам и разработчикам говорить на одном предметно-ориентированном языке.
Ключевые принципы BDD
- Спецификации поведения: в BDD используется предметно-ориентированный язык для формулирования требований и обычно применяются стандартизированные шаблоны для их описания. Требования в формате спецификации поведения включают в себя описание и сценарии. Описание содержит в себе цели и задачи заинтересованных лиц, а сценарии описывают желаемое поведение системы. Одним из часто используемых языков для составления спецификаций в BDD является Gherkin. BDD призывает все заинтересованные стороны работать вместе, чтобы определить поведение системы. Сюда входят разработчики, тестировщики, бизнес‑аналитики, менеджмент и конечные пользователи.
- Автоматизация и непрерывная интеграция. BDD полагается на автоматическое тестирование, чтобы гарантировать, что система работает должным образом. Автоматизированные тесты должны быть написаны в ясном, кратком и удобочитаемом формате. BDD поощряет команды часто интегрировать свой код и запускать автоматические тесты для каждой интеграции. Это помогает выявить дефекты на ранней стадии и избежать дорогостоящих задержек.
- Ориентация на бизнес: BDD ориентирована на создание ценности для бизнеса. Это означает, что любое поведение должно определяться с точки зрения его влияния на бизнес, а не с точки зрения технических требований.
Преимущества BDD
Одним из ключевых преимуществ BDD является то, что оно позволяет гарантировать, что разрабатываемое программное обеспечение соответствует потребностям бизнеса. Сосредоточив внимание на поведении, а не на технических требованиях, BDD побуждает бизнес более чётко формулировать желаемые цели, а разработчикам даёт возможность глубже задуматься о проблеме, которую они пытаются решить.
Еще одним преимуществом BDD является то, что он способствует сотрудничеству между разработчиками и тестировщиками. Работая вместе над определением поведения системы, разработчики и тестировщики могут выявить дефекты на ранних этапах процесса разработки. Разработку на основе поведения можно также рассматривать как расширение разработки через тестирование (TDD). Использование для описания требований к поведению системы предметно-ориентированного языка — это отличный способ преодолеть разрыв между сбором требований и тестированием.
Выводы
Разработка, основанная на поведении, — это мощная методология разработки программного обеспечения, которая может помочь командам создавать высококачественное программное обеспечение, отвечающее потребностям бизнеса. Сосредоточив внимание на целевом поведении, а не на технических аспектах, BDD позволяет обеспечить продуктивное сотрудничество между разработчиками, тестировщиками и бизнесом. Если вы еще не используете BDD в своей команде, то об этом определенно стоит подумать.
Тематические статьи
Agile — гибкие методологии разработки
Гибкие методологии или Agile — это итеративный и ориентированный на людей подход к разработке программного обеспечения, который сфокусирован на сотрудничестве, гибкости и реагировании на изменения. Эта методология направлена на предоставление высококачественного работающего программного обеспечения короткими шагами или итерациями.
TDD — разработка через тестирование
TDD, test-driven development или разработка через тестирование — это методология разработки ПО, повышающая надёжность и сопровождаемость проектов.
TDD основывается на повторении коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется программный код, который реализует желаемое поведение системы и позволяет пройти написанный тест, а после этого проводится рефакторинг написанного кода с постоянной проверкой прохождения тестов.
Экстремальное программирование, Extreme Programming / XP
Extreme Programming, экстремальное программирование, также известное как XP — это методология разработки программного обеспечения, которая относится к гибким (agile) и подчеркивает важность удовлетворения потребностей клиентов посредством непрерывной поставки высококачественного программного обеспечения.
Водопадная модель разработки
Водопадная модель разработки программного обеспечения — это процесс разработки, в котором все необходимые этапы проходят строго последовательно.
Разработка ПО по водопадной модели начинается со сбора и анализа требований, затем следует фаза проектирования и прототипирования. После завершения полного проектирования начинается этап программной реализации. После завершения этапа программирования разработанный продукт тестируется на соответствие требованиям. Затем осуществляется интеграция и запуск, после чего проект переходи в фазу поддержки и сопровождения.
Итеративная модель разработки
Итеративная (итерационная, инкрементная или эволюционная) модель разработки программного обеспечения — это процесс, который осуществляется небольшими этапами, в ходе которых ведется анализ полученных промежуточных результатов, выдвигаются новые требования и корректируются предыдущие этапы работы.
Жизненный цикл проекта при итерационной разработке разбит на последовательность итераций. Каждая из этих итерации, по сути, является водопадным проектом в миниатюре, то есть включает в себя все ключевые процессы разработки ПО и результатом работы по каждой итерации обычно является пригодная для использования версия продукта.
Модель ветвления Trunk Based Development (TBD)
Trunk Based Development (TBD) или транковая разработка — модель ветвления системы управления версиями, при которой все разработчики работают в одной ветке. Эта модель имеет значительные преимущества с точки зрения совместной работы, качества кода и скорости доставки изменений.
Модель ветвления GitFlow
GitFlow — модель ветвления системы управления версиями, разработанная для структурированного управления изменениями в коде и повышения качества совместной работы разработчиков.
Флаги функций (Feature Flags)
Флаги функций позволяют отделить развертывание функций от развертывания кода, обеспечивают возможности для A/B-тестирования и предоставляют механизм быстрого отключения проблемных функций
GIT — система управления версиями
GIT — распределённая система управления версиями, созданная Линусом Торвальдсом для управления разработкой ядра Linux и в настоящее время получившая очень широкое распространение в среде разработчиков программного обеспечения.