Всем привет.
Начал изучать автоматизацию. Обычно встречаю статьи и темы на пободобии Silenium WD+Junit,TestNG.
Но Тут наткнулся на BDD и Behave, Cucumber и прочие фреймворки. Но после попалась статься про Robot Framework и окончательно запутался.
Подскажите кто осведомлен, что с чем используют. Что нужно, что по ситуации? В чем между всеми этими вреймворками отличие.
cucumber - изначально появился на руби, потом сделали реализацию на других языках: cucumber js, cucumber jvm и так далее
behave/lettuce - это cucumber на питоне
если не ошибаюсь specflow - это реализация на сишарпе
У кукумбероподобных фреймворков используется собственный псевдоязык для описания сценариев - Gherkin, т.н. BDD стиль.
robot framework - это еще один фреймворк на питоне. Здесь используется концепция keyword-driven тестирования. Хотел подробно написать ответ, а потом нашел полезную ссылку тут же на форуме:
Полезные ссылки и информация по RobotFramework.
что конкретно смущает?
Насчет ситуации - если тесты пишешь только ты, то без особой разницы, какой фреймворк использовать. Бери что проще). Если планируется, что отдельные люди будут писать сценарии, а твоя задача - писать под них реализацию, и желательно иметь некую базу ключевых слов/фраз, которыми будут пользоваться люди, далекие от программирования, тогда удобно gherkin или тот же keyword-driven стиль как в роботфреймворке.
Добавлю про Robot Framework. Robot поддерживает как keyword-driven, так и data-driven и behavior-driven подходы. Подробнее см. тут: Robot Framework User Guide
Ну пока, у меня в компании, нет людей кто бы этим занимался. Я хочу начать, автоматизировать, но понятия не имею что выбрать. Что проще или что нужнее. Вот в этом и запутался, что не знаю что мне учить и что удобнее.
По началу буду писать UI тесты, после может уже глубже буду учится, но пока потребности нет. Собственно даже потребности для автоматизации нет, но мне хочется развиваться. С выбором языка у меня вопросов нет скорей всего это будет Java (потому что уже знаком с языком и проблем с поиском информации нет), так как мы делаем только WEB понятно, что Silenium нужен, а вот что к этому добавить не знаю
Selenide.
Так если я не ошибаюсь Selenide это просто обертка для силениума, типа для упрощения кода. А фреймворк какой лучше всего подойдет, для саморазвития ?
Фреймворк чего?) Если того, с чем использовать вышеупомянутый Selenide, то TestNG или Cucumber. Выбор зависит от подхода в разработке или просто симпатии к чему либо
Да просто писать на selenide + page objects. Достаточно.
Я просто не могу, что-то делать пока не понимаю зачем это То есть принцип “ты просто это нажимай и пофиг почему оно работает” я так не могу :))))
Сейчас немного почитал, и понял что тестовые фреймворки зависят от подхода разработки.
То есть если DDT - это JUnit, TestNG и т.д.
А BDD и TDD - Cucumber, Behave и т.д.
Мне интересно с точки зрения автоматизации тестирования, что сложней, что легче, что более качественней или удобней. То есть прикинуть какие-то плюсы- минусы этих подходов и инструментов. То есть что я получаю используя Cucumber,а что JUnit.
И что еще интересно, какой конкретно функционал этих фреймворков, ну то есть все манипуляции браузером, все шаги теста делаются силами Silenium, а что делаем сам Фрейвморк? Собирает данные и делает отчеты ? Формирует структуру и порядок шагов теста?
Понимаю, что вопросы нубские, но нормальной инфы не нашел. кроме стандартных статей как тестировать с TestNG или что такое Cucumber.
Silver Bullet или идеального решения не бывает. Могу лишь сказать следующее, если у вас не BDD, есть тест-дизайн и вас не беспокоит читаемость тестов (тут важно заметить что читабильность тестов может быть хорошей на любом инструменте, но с xUnit фреймворками на первых порах этого сложно добиться без участия толковых людей), то лучше используйте TestNG (можно JUnit, но он менее гибкий, стильный, молодежный и все такое ). Cucumber лучше исспользовать если комманда придерживается BDD подхода или ваши тесты возможно будут смотреть люди не сильно шарящие в программировании (ну мало ли, бывает и такое ), или если у вас нет тест-дизайна и вам его нужно писать самому (использование BDD позволит вам убить 2х зайцев сразу), так же в плюс можно занести поддержку русского, украинсокго и др. языков в описании тестов.
По поводу обертки над Selenium, то тут ессесно Selenide, а выбор между jBehave и Cucumber-jvm я бы остановил на втором, т.к. это офф. порт Cucumber.
Спасибо большое, за ориентиры.
У меня как бы 2 варианта. Мои тесты никто читать не будет, кроме меня. Я один тестировщик в команде. Но по этой же причине я не готовлю себе Тест дизайн. Только пишу короткие чеклисты, что бы продумать все оптимальные проверки и что бы ничего не забыть.
Насчет Selenide. Эта обертка действительно облегчает процесс или как-то его оптимизирует, улучшает. Или может лучше использовать чистый Silenium?
С Selenide вы будете быстрее писать код, он будет более читаемый и он поможет решить некоторую попаболь с ожиданиями элементов и другими проблемами) но ковырять и смотреть как он устроено под капотом тоже не помешает.
Просто зайдите на его сайт и посмотрите разницу между чистым selenium и selenide.
Так же можете посмотреть в сторону groovy как языка программирования. Работает на том же jvm, похож на java но более гибкий и менее многословный из-за динамической типизации.
А вот сейчас становится популярным Котлин тоже на Jvm. А эти языки могут работать со всем что делается на Java? То есть по сути эти языки как обертка над Java? могу я например на котлине или груви подключить Силениум как к Java и остальные фреймворки?
А еще с каким из этих языков меньше проблем в плане поиске решения всяких трудностей?
По поводу Селенид я понял что это упрощение обычного Силениума, просто будет не очень круто если например научится работать с селенид, а на каком-то собеседовании спросят Силениум, а я его не знаю, потому что работал по упрощеной схеме через Селенид :)))
Но это мысли в слух для себя уже все понял.
Я уже написал пару тестов небольших на селенид и вправду он на много проще силениума, в плане написания кода и логики. НО была очень большая проблема с подключением Хрома. Вообще не понимаю почему автор сам пишет в документации, что рекомендует использовать хром, но по-умолчанию Мозила. А офф инструкция как переключить Браузер не верная и решение нашел только на Стаковерфлоу. Короче убил пол вечера на подключение браузера. А вот скрип написать оказалось очень легко.
Kotlin, Scala, Groovy и даже Clojure - это все языки работающие поверх JVM, в большинстве случаев они совместимы со всеми либами написаными для языка Java, скорее всего любой из этих языков можно использовать совместо с Selenide, Selenium, Cucumber и т.п. но я не буду утвеждать что это так на все 100% ) Одно могу точно сказать, с Groovy у вас будет меньше проблем и вы сможете найти больше справочной информации на просторах тырнетов.
Спасибо большое, вопросов больше не имею