Что удобнее, Cypress или Selenium

Selenium №1 рабочий инструмент тестировщика в 2022 году. А Cypress очень популярен в некоторых QA-задачах. Оба инструмента очень мощные. Какой QA-инструмент кому подходит, и когда?

Если нет времени:

Что такое Cypress?

Cypress — это веб-платформа, как полагают ее создатели, “следующего поколения”. Основан на Mocha (здесь) и Chai (здесь). Платформа приспособлена для “сквозного” end-to-end автоматизированного тестирования, а поскольку JS все ще первый и главный язык тестировщика, а Selenium имеет свои минусы, то понятна причина популярности Cypress

Между Cypress и Selenium — большие различия в архитектуре. В Cypress не так много ограничений, что делает его более быстрым и простым, что касается сценариев автоматизации. Можно тестировать в браузере:

  • Юнит-тестирование
  • Интеграционное тестирование
  • Сквозное тестирование

Зачем нужен Cypress?

  • Из-за своей удобной архитектуры, платформа обеспечивает быстрое и стабильное выполнение тестов, по сравнению с другими средствами автоматизации.
  • Есть функция захвата скриншотов при выполнении тестов, а также и видео целого тест-сьюта; запускается из командной строки.
  • В отделе “Инструменты разработчика” есть опция отладки с хорошими функциями.
  • В отличие от других инструментов, в которых при выполнении тестов для синхронизации применяются wait’ы и sleep’ы, в Cypress есть неплохая встроенная функция “ожидания по дефолту” следующих действий, а также ожидания перед переходом к следующему шагу.
  • В Cypress отображается время реакции на действие, что полезно в юнит-тестировании.
  • Cypress хорошо приспособлен для CI-инструментов (непрерывной интеграции), особенно Jenkins.
  • Имея функцию сайзингаViewport, Cypress быстро проверяет отклик приложения.
  • Ясно обозначает статус тест-кейса, и количество кейсов в состоянии pass/fail.
  • Отлично реализован лог ошибок, четко видно их причины.
  • Ну и неплохая документация.

Плюсы Cypress

  • Так уж сложилось, что большинство инструментов сквозного тестирования построены “вокруг Selenium”, поэтому наследуют его проблемы. Как уже говорилось, Cypress — на другой архитектуре. Selenium выполняет remote-команды по сети, а Cypress работает в том же run-loop (цикле выполнения), что и тестируемое приложение.
  • Cypress тестирует (почти) все, что делается в браузере. Cypress прекрасно сочетается с модными JS-фреймворками. Нет проблем с React, Vue, Angular, даже Elm. Хорошо работает со старыми версиями страниц, и приложениями.
  • API-тестирование — очень хорошо, в отличие от других опенсорсных платформ.
  • Большинство тестовых инструментов работают “вне браузера”, выполняя, как уже говорилось выше, команды по сети. Cypress работает с приложением непосредственно в том же цикле выполнения. Cypress запускается серверным процессом Node.js. Процессы Cypress и Node.js постоянно коммуницируют между собой, синхронизируются, выполняют тестовые задачи в зависимости друг от друга. Имея доступ к обеим частям (фронтенду и бекенду) — появляется возможность обрабатывать события в реальном времени; действия “вне браузера” выполняются с высшей привилегией.
  • Cypress работает на уровне сети, просматривая и изменяя трафик на лету, что позволяет не только изменять все проходящие через него данные, но и изменять код во время автоматизации.
  • Cypress полностью контролирует весь процесс автоматизации, давая тестировщику обзор всего, что происходит в браузере и вне его. Это означает более надежные результаты тестирования.
  • Cypress ставится локально, и может удобно встраиваться в операционную систему для автоматизации задач. Это позволяет выполнять стандартные тестовые действия типа записи скриншотов и захвата экрана в видео, операции с файлами и сетью.

Еще плюсы: 

  • Как уже говорилось, Cypress хорош для юнит-тестирования, интеграционного и E2E-тестирования, поэтому нравится и разработчикам.
  • Писать код в Cypress легко, он JS-ориентированный, и там удобная отладка.

Удобные функции:

  • “Возврат во времени”. Делает снепшоты при выполнении тестов.
  • Отладка — легко читаемые ошибки и трассировки стеков.
  • Автоматическое ожидание. Функция авто-ожидания следующих команд и assertions до перехода на следующий шаг.
  • Функциональность “Spies-Stubs-Clocks”. Проверка и контроль функций, времени ответа сервера, и таймеров.
  • Контроль трафика. Управление сложными кейсами без обращения к серверу.
  • Скриншоты и видео. “Скрины” автоматически записываются при сбое, можно и весь сьют записать в видеофайл в CLI.

Минусы Cypress

Есть и такое!

  • Как часто бывает, недостатки являются продолжением достоинств. Cypress на основе JS, значит поддерживает только автоматизацию на JS, что как бы не ОК. Чтобы работать в Cypress, надо довольно-таки хорошо знать этот язык.
  • Кроссбраузерное тестирование — не такие широкие возможности как в Selenium (который является эталоном с этой точки зрения).
  • Тестирование мобильных версий браузеров или нативных приложений — не может быть автоматизировано в Cypress, и это тоже большой минус.

Что такое Selenium

Selenium — это опенсорсная платформа (фреймворк) для тестирования веб-приложений, поддерживаемая почти всеми возможными платформами и браузерами. Список поддерживаемых языков впечатляет, там даже олдовый Perl, Ruby, не говоря о C#, Python, Java и разумеется JS. Кроме стандартных Windows и Linux, поддерживает Mac OS и даже Solaris! 

Зачем нужен Selenium?

  • С точки зрения QA Lead. Твой лид скажет: во первых, “Селениум” опенсорсный, и это значит, что он обладает широчайшими возможности модификации “под проект”, и эти возможности используются на 200%.
  • Работает на любом браузере и на любой платформе.
  • Поддерживает все языки программирования (почти все), то есть в нем может работать практически каждый QA Junior “после курсов”.
  • Масштабируемый для любых проектов.

Плюсы Selenium

  • Как говорилось выше, “селениум” поддерживает практически все языки программирования, которые видел тестировщик в своей жизни
  • И все операционки, в которых он умеет работать
  • Поддерживает параллельное выполнение автоматизированных тестов, то есть ускорение тестов
  • Доброжелательное комьюнити, где всегда дадут совет
  • Хорошо подходит для DevOps и CI, интегрируется с Jenkins и Maven
  • Поддерживает тестирование в headless-режиме

Минусы Selenium

В могучем “селениуме” тоже есть минусы, вот:

  • Работает только для web-based-приложений. Автоматизации в Windows нет.
  • Система репортов не очень хорошо реализована, зависит от TestNG или Cucumber.
  • Не идеален для поиска динамических веб-элементов.
  • Не умеет автоматизировать капчу и бар-коды
  • Не лучший в отработке проблем с нагрузкой на страницу и проблем с синхронизацией. Не лучший в обработке всплывающих окон.
  • Есть функция захвата экрана, но, (все еще), тестирование изображений, видео и звука недоступно в Selenium (хотя обещают).
  • Требуется довольно-таки умелое владение языками программирования.
  • Хорош для тестирования интерфейса, и вообще простейших “массовых” QA-задач, однако не очень подходит для юнит-тестирования, интеграционного тестирования, и тестирования баз данных.

Cypress и Selenium наглядно — для ленивых QA Junior

Cypress Selenium
АрхитектураРаботает не “вне браузера”, а “внутри” его. Благодаря Node.js-серверу работает с фронтэндом и бекэндом приложения. Умеет обращаться к Windows-объектам, локальным хранилищам, DeveloperTools в браузере, DOM-дереву. В общем, “это оно” для автоматизации.Есть специальный Webdriver API, работающий между браузером и драйвером браузера. Вообще, Selenium состоит из 4 “слоев”. JSON-wire-протокол, драйвер браузера, сам браузер, и клиентская библиотека. Да, для каждого браузера нужен свой драйвер.
Кому подходитРазработчикам и тестировщикамТолько тестировщикам
Поддерживает браузерыChrome, Firefox, Edge, Brave, ElectronChrome 12+, Firefox 3+. IE 7-10, Safari 5.1+, Opera 11.5
Открытость кодаОпенсорсный, но есть платные фичиОпенсорсный
Операционная системаWindows 7+, Mac OS, Linux, Fedora, DebianWindows, Mac, Linux/Unix
Языки программированияТолько JavaScript!JavaScript (Node.js), Python, Ruby, Perl, PHP, Java, Kotlin (да!), C#
Просто ли поставитьВсе достаточно просто, т.к. не зависит от драйвера, и всё нужное идет в установочном пакетеНужны драйвера для каждого браузера
Есть ли проблемы с зависимостямиНет зависимостей от каких-либо драйверовЗависит от драйверов
Параллельное тестированиеДаДа
Мобильное тестированиеНе поддерживает!Поддерживает, через Appium

Кому лучше Cypress и кому Selenium

Если в проекте много юнит-тестирования, интеграционного и E2E-тестирования, то явно лучше Cypress.

Если, как чаще бывает, QA-команда должна протестировать только интерфейс и базовые функции, то лучше Selenium.

Большой минус Cypress — то что он поддерживает только JavaScript, а сейчас заметная часть тестировщиков “после курсов” знают только Python. Коротко: “Селениум” в 2022 остается “народным” инструментом QA, а Cypress для более узких задач.

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

1 КОММЕНТАРИЙ

Подписаться
Уведомить о
guest

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Ксения
Ксения
1 год назад

Параллельное тестирование Cypress’ом — так «да» или «нет»? В тексте — «нет», в сводной таблице — «да»

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас