Учебники

Развитие, управляемое поведением — огурец

Cucumber — это инструмент, который поддерживает исполняемые спецификации, автоматизацию тестирования и живую документацию.

Behavior Driven Development расширяет спецификацию на примере. Он также формализует лучшие практики разработки через тестирование, в частности, перспективу работы извне. Работа по разработке основана на исполняемых спецификациях.

Ключевые особенности исполняемых спецификаций следующие:

  • Исполняемые спецификации —

    • Получено из примеров, которые представляют поведение системы.

    • Написано с участием всех вовлеченных в разработку, в том числе бизнеса и заинтересованных сторон.

    • На основании критерия приемлемости.

  • Приемочные испытания, основанные на исполняемых спецификациях, автоматизированы.

  • Общий вездесущий язык используется для написания исполняемых спецификаций и автоматизированных тестов, так что —

    • Специфичная для домена терминология используется на протяжении всей разработки.

    • Все, включая клиентов и заинтересованные стороны, одинаково говорят о системе, ее требованиях и ее внедрении.

    • Эти же термины используются для обсуждения системы, присутствующей в требованиях, проектной документации, коде, тестах и ​​т. Д.

    • Любой может прочитать и понять требование и как создать больше требований.

    • Изменения могут быть легко приспособлены.

    • Живая документация поддерживается.

Исполняемые спецификации —

Получено из примеров, которые представляют поведение системы.

Написано с участием всех вовлеченных в разработку, в том числе бизнеса и заинтересованных сторон.

На основании критерия приемлемости.

Приемочные испытания, основанные на исполняемых спецификациях, автоматизированы.

Общий вездесущий язык используется для написания исполняемых спецификаций и автоматизированных тестов, так что —

Специфичная для домена терминология используется на протяжении всей разработки.

Все, включая клиентов и заинтересованные стороны, одинаково говорят о системе, ее требованиях и ее внедрении.

Эти же термины используются для обсуждения системы, присутствующей в требованиях, проектной документации, коде, тестах и ​​т. Д.

Любой может прочитать и понять требование и как создать больше требований.

Изменения могут быть легко приспособлены.

Живая документация поддерживается.

Cucumber помогает в этом процессе, поскольку он связывает воедино исполняемые спецификации с реальным кодом системы и автоматизированными приемочными тестами.

То, как это происходит, на самом деле предназначено для совместной работы заказчиков и разработчиков. Когда приемочный тест проходит, это означает, что спецификация поведения системы, которую он представляет, была выполнена правильно.

Типичный приемочный тест на огурцы

Рассмотрим следующий пример.

Особенность — Зарегистрироваться

  • Регистрация должна быть быстрой и дружелюбной.

  • Сценарий — Успешная регистрация

    • Новые пользователи должны получить подтверждение по электронной почте и быть встреченными лично.

    • Учитывая, что я решил зарегистрироваться.

    • Когда я зарегистрируюсь с действительными данными.

    • Затем я должен получить подтверждение по электронной почте.

    • И я должен увидеть персональное приветственное сообщение.

Регистрация должна быть быстрой и дружелюбной.

Сценарий — Успешная регистрация

Новые пользователи должны получить подтверждение по электронной почте и быть встреченными лично.

Учитывая, что я решил зарегистрироваться.

Когда я зарегистрируюсь с действительными данными.

Затем я должен получить подтверждение по электронной почте.

И я должен увидеть персональное приветственное сообщение.

Из этого примера мы видим, что —

  • Приемочные испытания относятся к функциям .

  • Особенности объясняются сценариями .

  • Сценарии состоят из шагов .

Приемочные испытания относятся к функциям .

Особенности объясняются сценариями .

Сценарии состоят из шагов .

Спецификация написана на естественном языке в виде простого текстового файла, но она исполняемая.

Работа огурца

Cucumber — это инструмент командной строки, который обрабатывает текстовые файлы, содержащие функции, и ищет сценарии, которые могут быть выполнены в вашей системе. Давайте разберемся, как работает огурец.

  • Он использует несколько соглашений о том, как называются файлы и где они расположены (соответствующие папки), чтобы облегчить начало работы.

  • Cucumber позволяет хранить спецификации, автоматизированные тесты и документацию в одном месте.

  • Каждый сценарий представляет собой список шагов, которые описывают предварительные условия, действия и постусловия сценария; если каждый шаг выполняется без ошибки, сценарий помечается как пройденный.

  • В конце цикла Cucumber сообщит, сколько сценариев прошло.

  • Если что-то не получается, он предоставляет информацию о том, что не удалось, так что разработчик может прогрессировать.

Он использует несколько соглашений о том, как называются файлы и где они расположены (соответствующие папки), чтобы облегчить начало работы.

Cucumber позволяет хранить спецификации, автоматизированные тесты и документацию в одном месте.

Каждый сценарий представляет собой список шагов, которые описывают предварительные условия, действия и постусловия сценария; если каждый шаг выполняется без ошибки, сценарий помечается как пройденный.

В конце цикла Cucumber сообщит, сколько сценариев прошло.

Если что-то не получается, он предоставляет информацию о том, что не удалось, так что разработчик может прогрессировать.

В «Огурце» функции , сценарии и шаги написаны на языке под названием « корнишон» .

Огурец — это простой текстовый английский (или один из 60+ других языков) со структурой. Огурец прост в освоении, а его структура позволяет писать примеры в сжатой форме.

  • Cucumber выполняет ваши файлы, которые содержат исполняемые спецификации, написанные в Gherkin.

  • Огурец нуждается в определениях шагов, чтобы перевести простые шаги «корнишон» в действия, которые будут взаимодействовать с системой.

  • Когда Cucumber выполняет шаг в сценарии, он ищет соответствующее определение шага для выполнения.

  • Определение шага — это небольшой фрагмент кода с прикрепленным к нему шаблоном.

  • Шаблон используется для связывания определения шага со всеми соответствующими шагами, а код — это то, что Cucumber выполнит, когда увидит шаг корнишона.

  • Каждый шаг сопровождается определением шага.

  • Большинство шагов будет собирать входные данные, а затем делегировать их фреймворку, специфичному для вашего домена приложения, для выполнения вызовов вашей фреймворка.

Cucumber выполняет ваши файлы, которые содержат исполняемые спецификации, написанные в Gherkin.

Огурец нуждается в определениях шагов, чтобы перевести простые шаги «корнишон» в действия, которые будут взаимодействовать с системой.

Когда Cucumber выполняет шаг в сценарии, он ищет соответствующее определение шага для выполнения.

Определение шага — это небольшой фрагмент кода с прикрепленным к нему шаблоном.

Шаблон используется для связывания определения шага со всеми соответствующими шагами, а код — это то, что Cucumber выполнит, когда увидит шаг корнишона.

Каждый шаг сопровождается определением шага.

Большинство шагов будет собирать входные данные, а затем делегировать их фреймворку, специфичному для вашего домена приложения, для выполнения вызовов вашей фреймворка.

Cucumber поддерживает более десятка различных программных платформ. Вы можете выбрать реализацию Cucumber, которая работает для вас. Каждая реализация Cucumber обеспечивает одинаковую общую функциональность, и у них также есть своя собственная процедура установки и функциональность, зависящая от платформы.

Отображение шагов и определений шагов

Ключ к огурцу — это отображение между шагами и определениями шагов.

Шаги по составлению карт

Реализация огурца

Ниже приведены реализации огурца.

Рубин / JRuby Рубин / JRuby
JRuby JRuby (используя Cucumber-JVM)
Джава Джава
Groovy Groovy
СЕТЬ .NET (используя SpecFlow)
JavaScript JavaScript
JavaScript JavaScript (с использованием Cucumber-JVM и Rhino)
Clojure Clojure
Gosu Gosu
Lua Lua
PHP PHP (используя Behat)
Jython
C ++ C ++
Tcl Tcl

Фреймворк Интеграция

Ниже приведены реализации Framework.