Тестирование UI web приложения. Нужен совет

На Ruby очень неплохо в плане сторонних модулей, расширяющих базовую функциональность. Та же capybara, rSpec, pageObject и иже с ними. Из плюсов: бери и пользуйся. Из минусов: если попадается что-нить, выходящее за функциональность используемых модулей - то либо дописываешь модуль сам, либо берёшь другой модуль, либо юзаешь костыль. Ещё из минусов - крайняя неторопливость тестов.
На питоне будут похожие расклады, разве что сторонних модулей поменьше и часть придётся-таки реализовывать руками, собрать out-of-the-box тестовый фреймворк тупо на готовых модулях не получится. Ну и нетороплив тоже.
Джава / C# поинтереснее в плане скорости, но, заюзав тот же Selenide + JUnit или TestNG, готовый тестовый фреймворк уж точно не получишь. Многое придётся дописывать руками. Ну и после скриптовых языков, переход на типизированный ЯП будет тем ещё адом поначалу, потом привыкнете.
В общем, вот такие пироги. Выбор за Вами :slight_smile:

Если хотите на Java, то можете пройти курс Selenium WebDriver + Java на udemy.com. Я так и сделал. Прошел за 2 недели и сейчас пишу на Java тесты. До этого опыта ни в Java, ни в автоматизации не было.

1 лайк

Я в копании тоже настраивала автоматизацию с нуля .
Выбрала для этого java + Selenium WebDriver + testNG + Maven. Почему testNG - он очень гибкий и есть аннотации, которые помогают очень и даже при интеграции с CI.
Также использую различные библиотеки , котрые можно скачать на сайте Selenium.
Конечно каждый тестировщик выбирает сам для себя с чем ему работать, но столько еще всего придется дописывать самому своими ручками… ))
P.S. Если использовать Java язык , то лучше писать тесты в Intellij IDEA , там потом в структуре проекта нужно будет загрузить все библиотеки и настроить модули проекта. А также не забудьте правильно построить Dom модель проекта - от этого зависит будет “ругаться” само окружение или нет. В интернете есть советы какая эта структура должна быть в мавен проекте.

2 лайка

А что такое DOM проекта? Что вы имеете ввиду?

Я тоже об этом думаю

Скорее всего человек имел ввиду pom))

Ссори, что ввела в заблуждение может кого-то, конечно этот термин скорее применяется для html страничек, но у нас так называют структуру проекта))) DOM - структура проекта (дерево проекта). Я еще помню на многих курсах преподаватели применяли этот термин для обозначения структуры проекта…

Вот ссылка, ранее тут уже это обсуждалось - Как правильно создать проект с тестами в Intellij idea с использованием maven, java, selenium, testng - #19 от пользователя MOSTOR

1 лайк

ааа, я так и понял)
благодарю за ссылку

а каким фреймворк вы используете?

кому интересно, вот посмотрел ролик батла TestNG vs Junit5. В принципе супер такой разницы не заметил, кроме конечно потоковой запуски тестов

Переходить на Java после Ruby как-то прямо странно, учитывая то, что ограничений у вас никаких нет.
Притом, что раз у вас есть опыт то вы можете быстро поднять окружение и начать писать я бы не тратил время, руководство, я думаю, будет радоваться если вы им раньше сможете предоставить результаты.

Просто вот учитывая то, что у меня есть опыт и на Ruby и на Java то начав писать на Джаве вы вначале будете невероятно удивляться почему там все реализуется так сложно, в отличие от Рубей.

Ну и если вы не будете юзать что-то типа Selenide то прийдется писать очень много кода, который будет казаться избыточным ну и будет нехватать синтаксического сахара Руби.

Из плюсов Java, которые я для себя нашел, возможность использования автодополнения при вызове переменных (элементов) из Page Object-ов)

Ну а там конечно решайте сами :slight_smile:

Поясните, пожалуйста, на примере, что имели в виду? О каком автодополнении речь?

OMG, ну и плюс))

Ну вот так) Правда, кроме этого не вижу ни одного плюса.
Любопытно было бы узнать о таковых в вашем случае, если они имеются)
Если не ошибаюсь у вас тоже есть опыт автоматизации на руби.

Ну типа я хочу вызвать элемент находящийся на определенной странице - page_object. - вот здесь после точнки Java IDE мне предложит на выбор все переменные находящиеся внутри класса PageObject в джаве я могу это сделать.
В Ruby же нет.

Для меня это в разы ускоряло скорость написания тестов на джаве, на рубях же приходится банально копипастить переменные.

Я забыл написать, что насколько я помню эта проблема существует только в Rubymine IDE и связана толи с Capybara framework, толи с динамической типизацией, в блокното-подобных редакторах такой вызов возможен.

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

Да, я знаю и я написал об этом выше:

“проблема существует только в Rubymine IDE и связана толи с Capybara framework, толи с динамической типизацией, в блокното-подобных редакторах такой вызов возможен”

Ну и вот один из ответов на Stackoverflow https://stackoverflow.com/questions/24571398/code-complete-siteprisms-elements-in-rubymine

Ну и хотелось бы услышать все же ваше мнение о плюсах и минусах.

Согласен. Джаву надо брать, раз бэк, т. е. бизнес-логика на java. Получится разработчиков привлечь к автоматизации и сделать очень качественный и полезный фреймворк. Можно будет юзать готовые доменные классы и методы у себя в тестах. Заодно научитесь нормальному ООП без синтаксического сахара. Тем более для джава куча библиотек, которые лишний код могут “прятать”. Например Lombok, Jackson. И Больше всего готовых инструментов автоматизации на Java.

Спасибо всем ответившим.
В общем решили работать в Java+TestNG на фрейморке Спринга. В общем переход с руби на джава дается совсем не так легко, как я думал.

  1. Пишите свой собственный экзекьютор
  2. Переходите на Scala, потом спасибо скажите
  3. Откажитесь от JUnit-оподобной фигни. Гиркин код (от огурца) - это максимум.
1 лайк