Любой современный язык программирования обладает BDD фреймворками автоматизации. А некоторые могут похвастаться и не одним.
Опираясь на всевозможные структурные принципы фреймворков, которые существуют на сегодняшний день, мы постараемся рассмотреть наиболее актуальные и значимые BDD. К слову, для каждого из них существует своя отдельная онлайн документация, где рассказывается о специфике его использования. Итак, поехали!
Базовые фреймворки
Больше половины BDD фреймворков – это своего рода унифицированные версии Cucumber, исходящие от базового фреймворка JBehave, описанные в стиле его автора Дена Норта, или non-Gherkin спек-раннеры. Некоторые специалисты умышленно организуют поведенческие сценарии в отдельные документы, в то время как другие располагают их непосредственно внутри написанного программного кода.
C# and Microsoft .NET
Пожалуй, только SpecFlow можно считать наиболее популярным BDD фреймворком для языков программирования Microsoft .NET. Его слоган можно перевести таким образом – «Cucumber для .NET» — а значит, он полностью совместим с продуктом Gherkin.
Базовый пакет фреймворка совершенно бесплатный и открытый, но вот лицензии на некоторые дополнения SpecFlow+ стоят отдельных денег. Также есть специальные расширения для Microsoft Visual studio, с помощью которых можно значительным образом облегчить разработку.
На сегодняшний день существует большое количество BDD фреймворков для C# и .NET. Некоторые рассматривают как альтернативу xBehave.net, который отменно функционирует в паре с xUnit.net. Самое главное отличие xBehave.net состоит в том, что все пошаговые сценарии создаются непосредственно в коде, а не в отдельных текстовых документах.
LightBDD можно рассматривать как более легкий фреймворк, применяющий некоторые приемы при взаимодействии с partial классами для максимальной читабельности программного кода. NSpec очень похож на RSpec, и активно использует лямбда-выражения.
Concordion предлагает повсеместное использование оригинальных решений для создания спеков. NBehave уже можно не рассматривать, так как начиная с 2014 года в его функционал не были внесены никакие особые изменения, поэтому многие разработчики и считают его «мертвым» фреймворком.
Java и JVM языки
Самыми главными конкурентами в java являются такие фреймворки, как JBehave и Cucumber-JVM.
Итак, Cucumber-JVM – это официальная версия языка программирования Java и сторонних языков JVM (Scala, Groovy). Он максимально совместим с Gherkin и может генерировать хорошие и информативные отчеты. Драйвер Cucumber-JVM можно запросто подстроить под свои технические предпочтения.
JBehave – один из первых распространенных фреймворков на рынке BDD. Но, к сожалению, в нем нет особенностей Gherkin. Его создание было продиктовано желанием использовать оригинальный фреймворк на чистом Java.
Оба описанных фреймворка пользуются хорошей популярностью, обладают оригинальными плагинами в большом количестве IDE и запросто монтируются на основе Maven пакетов.
Также в языке программирования Java есть и другие BDD фреймворки. К примеру, JGiven применяет fluent API для создания сценариев, а красочные HTML отчеты выводятся вместе с результатами тестов.
Spock and JDave являют собой унифицированные spec-фреймворки, но в то же время JDave очень стремительно развивается по своему направлению. Фреймворк Scalatest, созданный исключительно под язык программирования Scala, всецело основан на spec-компонентах. BDD Concordion также обладает своим оригинальным решением для языка Java.
Фреймворки JavaScript
90% фреймворков языка программирования JavaScript функционируют на основе Node.js. Фреймворк Mocha – довольно популярное решение, которое может преобразовывать фразы на английский язык и вставлять их в код спецификации.
На Mocha очень сильно похож фреймворк Jasmine, но проблема в том, что в Интернете очень мало информации по обучению взаимодействия с данным инструментом.
Фреймворки PHP
Два базовых фреймворка BDD для языка программирования – это Behat и Codeception.
Первый является официально подтвержденной версией Cucumber для PHP и в среде разработчиков считается наиболее «чистым» BDD фреймворком для автоматизации ПО. Фреймворк Codeception можно рассматривать больше как программерскую утилиту для создания разнообразных тестов.
Конечно, оба фреймворки хороши, но Codeception, по мнению большинства программистов PHP, кажется более гибким и продвинутым решением.
Python
У языка Python насчитывается большое количество тестовых фреймворков, многие из которых по своей сущности являются BDD. Наиболее популярными и известными считаются – lettuce и behave.
Фреймворк behave всецело совместим с Gherkin, а lettuce пока еще не может похвастаться большим количеством лингвистических элементов в своем техническом функционале. Оба этих фреймворка имеют свои плагины под IDE.
Radish – очередной фреймворк, с помощью которого можно качественно расширить Gherkin и в последующем использовать готовые сценарии, циклы и переменные. Все три фреймворка могут записывать готовые сценарии в feature файлы. Также они могут внедрять некоторые шаги в виде специальных функций вместо классов, что не только максимально упрощает создание новых шагов проверок, но и позволяет оперировать ими с более независимой стороны, а это уже в свою очередь помогает избегать лишних необъектных конструкций.
Есть и другие фреймворки языка программирования Python. К примеру, pyspecs – оригинальный spec-ориентированный фреймворк.
Фреймворки Ruby
Тот же Cucumber, который по праву считается ключевым стандартом качества в сфере BDD фреймворков, впервые был запущен именно в системе языка программирования Ruby. Он запросто взаимодействует с официальным языком программирования Gherkin, и каждая его версия создана на базе оригинального синтаксиса Ruby.
Фреймворк Spinach позиционирует себя как самый упрощенный Cucumber с максимально доработанным функционалом инкапсуляции пользовательских шагов. RSpec – это spec-ориентированный фреймворк, не взаимодействующий с Gherkin.
Так какой же фреймворк лучше всего выбрать?
Как ни крути, но на этот вопрос нет четкого и едино правильного ответа – самый лучший BDD фреймворк тот, который максимально удовлетворяет ваши технические потребности на проекте.
Но при выборе подходящего необходимо руководствоваться такими правилами:
- Какой именно язык программирования вы желаете использовать для процессов автоматизации?
- Является ли выбранный вами фреймворк популярным?
- Активно ли поддерживается его техническая составляющая?
- Его язык спецификации максимально совместим с Gherkin?
- Для каких именно типов проверок вы собираетесь его использовать?
- Какие существуют ограничения в его функционале по сравнению с другими решениями?
Все фреймворки BDD, которые могут отделять текст сценария от программного кода, очень хороши при внедрении shift-left проверок. Фреймворки BDD, которые определяют текст сценариев непосредственно в программный код, лучше всего использовать для пресловутого тестирования «белого ящика», но они могут вызывать и некоторые трудности, когда ими будут оперировать менее опытные разработчики.
Безусловными лидерами рынка фреймворков автоматизации на сегодняшний день являются behave, Cucumber-JVM, SpecFlow.
Для максимального эффекта взаимозаменяемости рекомендуется использовать фреймворк, который совместим с Gherkin.
Бонус! Краткая классификация BDD фреймворков
Язык программирования | Фреймворк | Вид |
---|---|---|
C | Catch | In-line Spec |
C++ | Iqloo | In-line Spec |
C# and .NET | Concordion LightBDD NBehave x NSpec SpecFlow* xBehave.net | In-line Spec In-line Gherkin Separated semi-Gherkin In-line Spec Separated Gherkin In-line Gherkin |
Golang | Ginkgo | In-line Spec |
Java and JVM | Cucumber-JVM * JBehave JDave x JGiven* Scalatest Spock Separated Gherkin | Separated semi-Gherkin In-line Spec In-line Gherkin In-line Spec In-line Spec |
JavaScript | Cucumber.js* Jasmine Mocha Vows Yadda | Separated Gherkin In-line Spec In-line Spec In-line Spec Separated semi-Gherkin |
PHP | Behat Codeception* | Separated Gherkin Separated or In-line |
Perl | Test::BDD::Cucumber | Separated Gherkin |
Python | Behave* Freshen x Lettuce Pyspecs Pytest-bdd Radish* | Separated Gherkin Separated Gherkin Separated semi-Gherkin In-line Spec Separated semi-Gherkin Separated Gherkin-plus |
Ruby | Cucumber* RSpec Spinach | Separated Gherkin In-line Spec Separated Gherkin |
Swift/Objective | Quick | In-line Spec |
Оставить комментарий