Selenium против Selenide: какая среда автоматизации тестирования пользовательского интерфейса лучше?
16 марта 2022 г.Оглавление
- [Селеновая сетка] (#heading-selenium-grid)
Выбор платформы автоматизации пользовательского интерфейса — непростая задача. Вы должны учитывать множество факторов в зависимости от потребностей вашей компании:
- Набор навыков, доступных в компании
- Кривая обучения
- Простота использования
- Кроссбраузерная и платформенная поддержка
- Интеграция с облачными сервисами тестирования
- CI/CD интеграция
- Стоимость лицензии
- Подробные отчеты
Тогда мои коллеги оценили несколько фреймворков и остановили свой выбор на Selenium и Selenide. Итак, вопрос в том, какой фреймворк использовать?
Не буду тратить ваше время, поэтому быстро отвечу на вопрос: оба. Спасибо за прочтение. 😊
Шутки в сторону, если вам интересно, почему, пожалуйста, продолжайте читать. В этой первой статье давайте рассмотрим их один за другим, чтобы я мог дать более подробный ответ на наш вопрос.
Что такое селен?
Selenium — это проект [с открытым исходным кодом] (https://github.com/SeleniumHQ/selenium), состоящий из различных инструментов для автоматизации веб-браузеров, поддерживающих множество браузеров на многих платформах. Он широко используется для автоматизации тестирования, но оно не ограничивается только тестированием. Его основными компонентами являются Selenium WebDriver, Selenium RC, Selenium IDE (запись и воспроизведение) и Selenium Grid. Я не буду говорить о Selenium RC, который является предшественником Selenium WebDriver, если вы хотите прочитать об этом, вы можете найти информацию [здесь] (https://www.selenium.dev/documentation/legacy/selenium_1/) . Я также пропускаю Selenium IDE, который представляет собой простой инструмент для записи и воспроизведения. Исходя из моего опыта, это полезно только для людей, которые являются новичками в разработке программного обеспечения, или в случае, если вы не очень хорошо знакомы с DOM. Если вы все еще заинтересованы, посмотрите [эту страницу] (https://www.selenium.dev/selenium-ide/).
Селен веб-драйвер
Это набор зависимых от языка привязок для естественного управления браузером, как это сделал бы настоящий пользователь. Поддерживаемые языки включают Java, C#, Kotlin, Python, Ruby, JavaScript, Perl и PHP. WebDriver может работать как локально, так и удаленно (с помощью Selenium Grid).
Selenium может автоматизировать только веб-страницы, но вы не можете автоматизировать нативные приложения, для этой цели вы можете использовать Appium. Если вы заинтересованы в Appium, я настоятельно рекомендую курс Udemy Rahul Shetty.
Если вы заинтересованы в программировании Selenium WebDriver с использованием языка Java, я настоятельно рекомендую Rahul Shetty по Udemy, я лично многому научился из этого .
Я также разработал фреймворк Selenium на основе Cucumber после прохождения курса, так что вы можете сразу приступить к разработке Selenium. Он доступен на [GitHub] (https://github.com/mszeles/selenium-framework-template). Для Selenide я пока не могу порекомендовать хороший курс, но это основная причина, по которой я начал писать этот цикл статей.
Селеновая сетка
С помощью Selenium Grid вы можете запускать тесты параллельно на нескольких виртуальных и физических машинах. Последняя версия Selenium Grid 4 имеет совершенно новую кодовую базу по сравнению с предыдущими версиями.
Используя Grid, вы можете построить свою собственную инфраструктуру, но есть много сайтов, которые предоставляют грид-сервисы Selenium. Один из них — [Browserstack] (https://www.browserstack.com/), который поддерживает более 3000 реальных устройств и браузеров.
Селенид
Давайте поговорим о Selenide. Так что же такое Селенид? Selenide — это фреймворк [с открытым исходным кодом] (https://github.com/selenide/selenide), построенный поверх Selenium WebDriver, основная цель которого — упростить автоматизацию тестирования. Поскольку он основан на Selenium WebDriver, это также означает, что мы получаем полный набор его функций и давайте посмотрим, что еще мы получаем в дополнении:
- Он имеет свободный API для тестов, так что у вас будет более лаконичный и читаемый код.
- Он поддерживает Ajax, так что у вас будет гораздо меньше проблем с обработкой тайм-аутов, так что вы сможете писать более стабильные тесты.
- В дополнение к селекторам Selenium у вас есть дополнительные расширенные селекторы, упрощающие поиск элементов.
- Предоставляет простые способы загрузки файлов.
- Предоставляет методы для перехода между родительскими и дочерними элементами.
- Его очень легко настроить, так как используются разумные значения по умолчанию, поэтому вам не нужно возиться с WebDriver, но, конечно, вы можете, если хотите.
- Selenide автоматически делает снимки экрана при неудачных тестах, предоставляя также ссылку, даже во время работы на Jenkins, чтобы вам было легче определить проблему.
- Он имеет встроенный профилировщик .
- Отправка ключей к элементам при использовании Selenium происходит довольно медленно, так как он отправляет ключи один за другим. Selenide предоставляет метод на основе javascript, который является гораздо более быстрым способом отправки ключей.
- Предоставляет подробные сообщения об ошибках, даже регистрируя источник HTML, принадлежащий элементу, поэтому это значительно упрощает отладку.
- Переключиться с Selenium на Selenide легко, даже если у вас есть сотни тестов Selenium, поскольку тесты Selenium полностью совместимы с Selenide.
Это основная информация, которая нам нужна о фреймворках, так что давайте продолжим их сравнение.
Оценка фреймворков на основе наших требований
Набор навыков, доступный в компании
У нашей команды большой опыт работы с Java, поэтому Selenium кажется разумным выбором, поскольку он поддерживает многие языки программирования, включая Java.
Selenide ограничен Java и другими языками на основе JVM, но, поскольку у нас есть опыт работы с Java, Selenide так же хорош для нас, как и Selenium. Для нас соотношение Selenium:Selenide 1:1.
Кривая обучения
По Selenium можно найти массу материалов в интернете: видеокурсы, туториалы, статьи. Если у вас есть хороший опыт работы с Java и вы знакомы с DOM, то изучить Selenium довольно просто. Поскольку это открытый исходный код, вы также можете проверить исходный код в любое время.
У Selenide есть довольно короткая документация, но есть много примеров, доступных на GitHub. Я не нашел ни одного видеокурса по теме, но, конечно, статьи имеются. В Stackoverflow есть несколько сотен вопросов, связанных с Selenide, по сравнению с тем, что в Selenium их почти 100 000. Несмотря на это, изучить Selenide также легко (особенно если вы уже знакомы с Selenium). Это также с открытым исходным кодом, поэтому у вас есть возможность просмотреть код, если хотите.
Однако многие проблемы, с которыми вы сталкиваетесь во время разработки Selenide, могут быть решены с помощью материалов, принадлежащих Selenium (поскольку Selenide основан на Selenium WebDriver), это все равно победа для Selenium: 2:1.
Простота использования
Если вы вернетесь к вводному разделу Selenide, то увидите список тем, в которых Selenide превосходит Selenium. Это большая победа Selenide: 2:2.
Кроссбраузерная и платформенная поддержка
Обе платформы имеют одинаковую поддержку браузера и платформы. Это равно: 3:3.
Интеграция с облачными сервисами тестирования
И Selenium, и Selenide могут интегрироваться с Browserstack, так что они снова равны. Положение 4:4.
Интеграция CI/CD
Selenium хорошо интегрируется с Jenkins и то же самое можно сказать о Selenide. В нашей компании мы используем GitLab, у которого есть собственный инструмент CI/CD, и я могу сказать, что Selenide хорошо с ним работает: 5:5.
Стоимость лицензии
Оба являются бесплатными программами: 6:6.
Подробные отчеты
Ни в Selenium, ни в Selenide нет встроенных отчетов, но вы можете легко интегрировать их с платформами тестирования, такими как JUnit или TestNG. С помощью этих фреймворков вы можете создавать необходимые отчеты. В дополнение к этому Selenide имеет профилировщик, с помощью которого вы можете создавать отчеты, включающие время выполнения каждого действия в миллисекундах. Основываясь на этом, вы можете лучше понять, на что ваши тесты тратят свое время и где вы можете улучшить свои тесты. С профилировщиком это еще одно очко для Selenide.
Результат
Таким образом, окончательный результат — 6:7 в пользу Selenide. Конечно, вы не можете принять решение только по результату, так как все факторы имеют разный весt в зависимости от потребностей вашей команды. Принимая во внимание дополнительные возможности Selenide, облегчающие разработку, мы решили использовать его и не пожалели о своем решении. Selenide — довольно активный проект, выпускающий несколько релизов в месяц, я настоятельно рекомендую попробовать его.
Заключительные слова
Это первая вводная статья из серии, которую я напишу об автоматизации тестирования с помощью Selenide. Я почти уверен, что вам не терпится увидеть код, так что в следующей статье мы начнем разработку Selenide.
Если вас интересует управленческая сторона обеспечения качества в гибкой среде, я рекомендую прочитать [эту статью] (https://www.linkedin.com/pulse/first-steps-quality-management-agile-projects- akos-piltmann?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BGBKXPwn2S3aSjYTTMdLkRw%3D%3D), написанный моими коллегами Ákos Piltmann и István Szarka и [István Szarka] %3D).
Чтобы закрыть статью, я оставляю вам вопрос здесь:
Какая у вас платформа автоматизации пользовательского интерфейса номер один? Пожалуйста, поделитесь своим опытом в разделе комментариев.
**Расскажите о том, насколько хорош Hashnode, поэтому, пожалуйста, поделитесь этой статьей в социальных сетях!**😊
Если вы не хотите пропустить мои посты, просто подпишитесь на меня здесь, на Hashnode, на LinkedIn, в Twitter, в Medium.com, в dev.to и даже в Instagram. 😊
P.S.: Поддержите меня, поделившись этой статьей. 👍
📚Присоединяйтесь к сообществу Selenide на LinkedIn! ✌
Оригинал