Развитие, управляемое поведением - Cucumber

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Типичный приемочный тест на Cucumber

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Работа Cucumber

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cucumber поддерживает более десятка различных программных платформ. Вы можете выбрать реализацию 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
<span class = Луа "/> Lua
PHP PHP (используя Behat)
Jython
C ++
Tcl Tcl

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

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

Рубин на рельсах Рубин на рельсах
<span class = Селен "/> Selenium
PicoContainer PicoContainer
<span class = Spring Framework "/> Spring Framework
<span class = Ватир "/> Watir