Развитие, управляемое поведением - огурец
Cucumber - это инструмент, который поддерживает исполняемые спецификации, автоматизацию тестирования и живую документацию.
Разработка, управляемая поведением, расширяет спецификацию на примере. Он также формализует лучшие практики разработки через тестирование, в частности, перспективу работы извне вовнутрь. Разработка основана на исполняемых спецификациях.
В key features исполняемых спецификаций следующие:
Исполняемые спецификации:
На основе примеров, представляющих поведение системы.
Написано при сотрудничестве всех, кто участвует в разработке, включая бизнес и заинтересованные стороны.
По критерию приемки.
Приемочные испытания, основанные на исполняемых спецификациях, автоматизированы.
Общий, повсеместный язык используется для написания исполняемых спецификаций и автоматизированных тестов, чтобы:
На протяжении всей разработки используется терминология, специфичная для предметной области.
Все, включая клиентов и заинтересованных лиц, одинаково говорят о системе, ее требованиях и реализации.
Те же термины используются для описания системы, представленной в требованиях, проектной документации, кодексе, тестах и т. Д.
Любой желающий может прочитать и понять требование и способы создания дополнительных требований.
Изменения могут быть легко внесены.
Поддерживается живая документация.
Cucumber помогает в этом процессе, поскольку связывает исполняемые спецификации с фактическим кодом системы и автоматическими приемочными испытаниями.
То, как это делается, на самом деле предназначено для совместной работы заказчиков и разработчиков. Когда приемочный тест проходит, это означает, что спецификация поведения системы, которую он представляет, была реализована правильно.
Типичный приемочный тест огурца
Рассмотрим следующий пример.
Feature − Sign up
Регистрация должна быть быстрой и дружелюбной.
Сценарий - Успешная регистрация
New пользователи должны получить электронное письмо с подтверждением и лично приветствовать их.
Given Я решил зарегистрироваться.
When Я регистрируюсь с действительными данными.
Then Я должен получить электронное письмо с подтверждением.
And Я должен увидеть персональное приветственное сообщение.
Из этого примера мы видим, что -
Приемочные испытания относятся к Features.
Особенности объясняются Scenarios.
Сценарии состоят из Steps.
Спецификация написана на естественном языке в виде простого текстового файла, но является исполняемой.
Работа из огурца
Cucumber - это инструмент командной строки, который обрабатывает текстовые файлы, содержащие функции, ищущие сценарии, которые могут быть выполнены в вашей системе. Давайте разберемся, как работает огурец.
Он использует множество соглашений о том, как файлы именуются и где они расположены (соответствующие папки), чтобы упростить начало работы.
Cucumber позволяет хранить спецификации, автоматизированные тесты и документацию в одном месте.
Каждый сценарий представляет собой список шагов, которые описывают предварительные условия, действия и пост-условия сценария; если каждый шаг выполняется без каких-либо ошибок, сценарий помечается как пройденный.
В конце выполнения Cucumber сообщит, сколько сценариев прошло.
Если что-то не удается, он предоставляет информацию о том, что не удалось, чтобы разработчик мог продолжить.
В огурце, Features, Scenarios, а шаги написаны на языке, который называется Gherkin.
Gherkin - это текстовый английский (или один из более чем 60 других языков) со структурой. Gherkin легко выучить, а его структура позволяет писать примеры лаконично.
Cucumber выполняет ваши файлы, которые содержат исполняемые спецификации, написанные на Gherkin.
Cucumber нуждается в определениях шагов, чтобы преобразовать простые текстовые шаги Gherkin в действия, которые будут взаимодействовать с системой.
Когда Cucumber выполняет шаг в сценарии, он будет искать соответствующее определение шага для выполнения.
Определение шага - это небольшой фрагмент кода с прикрепленным к нему шаблоном.
Шаблон используется для связывания определения шага со всеми соответствующими шагами, а код - это то, что Cucumber выполнит, когда увидит шаг Gherkin.
Каждый шаг сопровождается определением шага.
Большинство шагов будут собирать входные данные, а затем делегировать их структуре, специфичной для вашего домена приложения, чтобы делать вызовы в вашей структуре.
Cucumber поддерживает более десятка различных программных платформ. Вы можете выбрать ту реализацию Cucumber, которая вам подходит. Каждая реализация Cucumber обеспечивает одинаковую общую функциональность, а также имеет свою собственную процедуру установки и функциональность, специфичную для платформы.
Отображение шагов и определений шагов
Ключ к Cucumber - это соответствие между шагами и определениями шагов.

Реализации огурца
Ниже приведены реализации Cucumber.
![]() |
Руби / JRuby |
![]() |
JRuby (с использованием Cucumber-JVM) |
![]() |
Ява |
![]() |
Groovy |
![]() |
.NET (с использованием SpecFlow) |
![]() |
JavaScript |
![]() |
JavaScript (с использованием Cucumber-JVM и Rhino) |
![]() |
Clojure |
![]() |
Госу |
![]() |
Lua |
![]() |
PHP (с использованием Behat) |
![]() |
Jython |
![]() |
C ++ |
![]() |
Tcl |
Интеграция фреймворка
Ниже приведены реализации Framework.
![]() |
Рубин на рельсах |
![]() |
Селен |
![]() |
ПикоКонтейнер |
![]() |
Spring Framework |
![]() |
Watir |