Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Silenium + Junit,Behave,Cucumber, Robot. Я запутался, что с чем использовать и почему

bdd
robot-framework
behave
selenium
webdriver
Теги: #<Tag:0x00007f7b65181ce8> #<Tag:0x00007f7b65181ba8> #<Tag:0x00007f7b65181a68> #<Tag:0x00007f7b65181928> #<Tag:0x00007f7b651817e8>

(Alex King) #1

Всем привет.
Начал изучать автоматизацию. Обычно встречаю статьи и темы на пободобии Silenium WD+Junit,TestNG.
Но Тут наткнулся на BDD и Behave, Cucumber и прочие фреймворки. Но после попалась статься про Robot Framework и окончательно запутался.
Подскажите кто осведомлен, что с чем используют. Что нужно, что по ситуации? В чем между всеми этими вреймворками отличие.


(Bolatbek) #2

cucumber - изначально появился на руби, потом сделали реализацию на других языках: cucumber js, cucumber jvm и так далее
behave/lettuce - это cucumber на питоне
если не ошибаюсь specflow - это реализация на сишарпе
У кукумбероподобных фреймворков используется собственный псевдоязык для описания сценариев - Gherkin, т.н. BDD стиль.

robot framework - это еще один фреймворк на питоне. Здесь используется концепция keyword-driven тестирования. Хотел подробно написать ответ, а потом нашел полезную ссылку тут же на форуме:
Полезные ссылки и информация по RobotFramework.

что конкретно смущает?

Насчет ситуации - если тесты пишешь только ты, то без особой разницы, какой фреймворк использовать. Бери что проще). Если планируется, что отдельные люди будут писать сценарии, а твоя задача - писать под них реализацию, и желательно иметь некую базу ключевых слов/фраз, которыми будут пользоваться люди, далекие от программирования, тогда удобно gherkin или тот же keyword-driven стиль как в роботфреймворке.


(rmerkushin) #3

Добавлю про Robot Framework. Robot поддерживает как keyword-driven, так и data-driven и behavior-driven подходы. Подробнее см. тут: http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#different-test-case-styles


(Alex King) #4

Ну пока, у меня в компании, нет людей кто бы этим занимался. Я хочу начать, автоматизировать, но понятия не имею что выбрать. Что проще или что нужнее. Вот в этом и запутался, что не знаю что мне учить и что удобнее.
По началу буду писать UI тесты, после может уже глубже буду учится, но пока потребности нет. Собственно даже потребности для автоматизации нет, но мне хочется развиваться. С выбором языка у меня вопросов нет скорей всего это будет Java (потому что уже знаком с языком и проблем с поиском информации нет), так как мы делаем только WEB понятно, что Silenium нужен, а вот что к этому добавить не знаю :slight_smile:


(Bolatbek) #5

Selenide.


(Alex King) #6

Так если я не ошибаюсь Selenide это просто обертка для силениума, типа для упрощения кода. А фреймворк какой лучше всего подойдет, для саморазвития ?


(rmerkushin) #7

Фреймворк чего?) Если того, с чем использовать вышеупомянутый Selenide, то TestNG или Cucumber. Выбор зависит от подхода в разработке или просто симпатии к чему либо :slight_smile:


(Bolatbek) #8

Да просто писать на selenide + page objects. Достаточно.


(Alex King) #9

Я просто не могу, что-то делать пока не понимаю зачем это :slight_smile: То есть принцип “ты просто это нажимай и пофиг почему оно работает” я так не могу :))))

Сейчас немного почитал, и понял что тестовые фреймворки зависят от подхода разработки.
То есть если DDT - это JUnit, TestNG и т.д.
А BDD и TDD - Cucumber, Behave и т.д.
Мне интересно с точки зрения автоматизации тестирования, что сложней, что легче, что более качественней или удобней. То есть прикинуть какие-то плюсы- минусы этих подходов и инструментов. То есть что я получаю используя Cucumber,а что JUnit.
И что еще интересно, какой конкретно функционал этих фреймворков, ну то есть все манипуляции браузером, все шаги теста делаются силами Silenium, а что делаем сам Фрейвморк? Собирает данные и делает отчеты ? Формирует структуру и порядок шагов теста?

Понимаю, что вопросы нубские, но нормальной инфы не нашел. кроме стандартных статей как тестировать с TestNG или что такое Cucumber.


(rmerkushin) #10

Silver Bullet или идеального решения не бывает. Могу лишь сказать следующее, если у вас не BDD, есть тест-дизайн и вас не беспокоит читаемость тестов (тут важно заметить что читабильность тестов может быть хорошей на любом инструменте, но с xUnit фреймворками на первых порах этого сложно добиться без участия толковых людей), то лучше используйте TestNG (можно JUnit, но он менее гибкий, стильный, молодежный и все такое :slight_smile: ). Cucumber лучше исспользовать если комманда придерживается BDD подхода или ваши тесты возможно будут смотреть люди не сильно шарящие в программировании (ну мало ли, бывает и такое :slight_smile: ), или если у вас нет тест-дизайна и вам его нужно писать самому (использование BDD позволит вам убить 2х зайцев сразу), так же в плюс можно занести поддержку русского, украинсокго и др. языков в описании тестов.

По поводу обертки над Selenium, то тут ессесно Selenide, а выбор между jBehave и Cucumber-jvm я бы остановил на втором, т.к. это офф. порт Cucumber.


(Alex King) #11

Спасибо большое, за ориентиры.
У меня как бы 2 варианта. Мои тесты никто читать не будет, кроме меня. Я один тестировщик в команде. Но по этой же причине я не готовлю себе Тест дизайн. Только пишу короткие чеклисты, что бы продумать все оптимальные проверки и что бы ничего не забыть.

Насчет Selenide. Эта обертка действительно облегчает процесс или как-то его оптимизирует, улучшает. Или может лучше использовать чистый Silenium?


(rmerkushin) #12

С Selenide вы будете быстрее писать код, он будет более читаемый и он поможет решить некоторую попаболь с ожиданиями элементов и другими проблемами) но ковырять и смотреть как он устроено под капотом тоже не помешает.

Просто зайдите на его сайт и посмотрите разницу между чистым selenium и selenide.

Так же можете посмотреть в сторону groovy как языка программирования. Работает на том же jvm, похож на java но более гибкий и менее многословный из-за динамической типизации.


(Alex King) #13

А вот сейчас становится популярным Котлин тоже на Jvm. А эти языки могут работать со всем что делается на Java? То есть по сути эти языки как обертка над Java? могу я например на котлине или груви подключить Силениум как к Java и остальные фреймворки?
А еще с каким из этих языков меньше проблем в плане поиске решения всяких трудностей?

По поводу Селенид я понял что это упрощение обычного Силениума, просто будет не очень круто если например научится работать с селенид, а на каком-то собеседовании спросят Силениум, а я его не знаю, потому что работал по упрощеной схеме через Селенид :)))

Но это мысли в слух :slight_smile: для себя уже все понял.

Я уже написал пару тестов небольших на селенид и вправду он на много проще силениума, в плане написания кода и логики. НО была очень большая проблема с подключением Хрома. Вообще не понимаю почему автор сам пишет в документации, что рекомендует использовать хром, но по-умолчанию Мозила. А офф инструкция как переключить Браузер не верная и решение нашел только на Стаковерфлоу. Короче убил пол вечера на подключение браузера. А вот скрип написать оказалось очень легко.


(rmerkushin) #14

Kotlin, Scala, Groovy и даже Clojure - это все языки работающие поверх JVM, в большинстве случаев они совместимы со всеми либами написаными для языка Java, скорее всего любой из этих языков можно использовать совместо с Selenide, Selenium, Cucumber и т.п. но я не буду утвеждать что это так на все 100% ) Одно могу точно сказать, с Groovy у вас будет меньше проблем и вы сможете найти больше справочной информации на просторах тырнетов.


(Alex King) #15

Спасибо большое, вопросов больше не имею :slight_smile: