hwdtech blog
Дегустация Cypress:
как мы тестировали фреймворк для тестирования
Наш тестировщик Михаил Левашов о том, что такое Cypress, каковы его особенности а также о февральском обновлении платформы.
18-03-2020
Cypress, тестирование, автотесты
Время чтения: 3 минуты
Сегодня поговорим про платформу для автоматического тестирования Сypress, с которой мы познакомились в октябре прошлого года и в настоящий момент продолжаем изучать ее функционал. Хотим немного рассказать о нашем первом опыте, а заодно горячо похвалить февральское обновление, которое расширило возможности кроссбраузерного тестирования.
Вообще, многие обращают внимание на Cypress из-за того, что на проекте нет тестировщика и они хотят «бросить» все его функции на откуп данной платформе. Мы пошли по иному пути и вручили «новую игрушку» самим тестировщикам, отошли в сторонку и посмотрели, что будет.

Что мы теперь думаем? Cypress предоставляет действительно интересные технические решения. Разработчики сумели оптимизировать многие процессы, благодаря чему ускорили тестирование и сделали его приятным, избавив от ненужной рутины. Помимо этого, у него широкий функционал, низкий порог входа и интуитивная доступность.

В целом, это очень перспективный фреймворк, он активно развивается и в ближайшем будущем, вероятно, завоюет IT-компании всего мира. Нам же хотелось сыграть на опережение, осваивая его уже сейчас – и пока что мы этой «дегустацией» очень довольны.
Что нам дает Cypress?
Cypress.io представляет собой многофункциональную платформу для автоматического тестирования веб-интерфейсов, предоставляющую эффективные инструменты для написания тестов любой сложности - от небольших модульных (unit), до развернутых сквозных (e2e). Любые компоненты и процесс их взаимодействия можно подробно отследить, предварительно описав сценарий.

Преимуществом данной среды является исчерпывающая документация. Это один из важнейших аргументов «за» Cypress – при желании можно начать изучать этот фреймворк практически с нуля, даже если у вас еще не было опыта автоматизации.

Интуитивный интерфейс приложения позволяет приступать к запуску первых модульных тестов сразу из коробки. Cypress являет собой самостоятельный all-in-one фреймворк, и в отличии от Selenium, регулярное подключение библиотек и модулей здесь отпало за ненадобностью, что значительно упрощает работу и экономит время, позволяя сразу приступить к тестированию.
При установке и запуске Cypress мы сразу же видим примеры кода с актуальными командами (cypress/integration/examples), где наглядно реализованы основные функции. Для подключения своих интеграционных тестов требуется лишь поместить файлы в соответствующую директорию.

Структура тестов в рамках Cypress — это алгоритм, состоящий из последовательных команд, связанных между собой описанной нами логикой. Удобный пошаговый сценарий достигается за счет возможности обращения к любому элементу в DOM. Принцип основывается на идентификации элемента или их группы по общему или частному названию/селектору/свойству и многим другим параметрам, в зависимости от сценария. Данная особенность позволяет без каких-либо затруднений детализировать процесс навигации и обращения к выбранному компоненту.
Платформа Cypress оснащена собственным отдельным браузером для выполнения тестов (Chrome), без проблем интегрируется в любой проект и может управлять трафиком. В итоге мы имеем свободное пространство для творчества и мощный инструмент для командной работы, в котором все под рукой.
Что мы получили в феврале?
Тут, что называется, послушаем наших тестировщиков. По их словам, долгожданное февральское обновление платформы расширило возможности кроссбраузерного тестирования, реализация которого уже не первый день волновала коммьюнити. Разработчики Cypress говорят, что в этот раз команда сосредоточилась на одном из самых ожидаемых за последнее время релизов - добавлением новых сред исполнения.

В свежем патче мы получаем поддержку Firefox и Edge, а также возможность задавать тестам пространство, очередность и приоритет исполнения в зависимости от выбранного браузера. Разработчики в этот раз побаловали новыми оптимизационными решениями, которые стоят того, чтобы обратить на них внимание.



Теперь мы можем определять скрипты для запуска тестов в строго заданной среде с помощью шорткатов, и обращаться к ним по специальному флагу. Фреймворк сам определяет имеющиеся в системе браузеры, и предоставляет возможность работы с ними сразу после установки.

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

Добавлена функция пропуска/игнорирования тестов в рамках контекста: инструмент позволяет минимизировать затраты на дистанции, оставив в сессии лишь необходимые в данный момент тесты. Отныне мы можем сосредоточиться на актуальном и не тратить время на проверку лишнего контекста. Например, при необходимости мы можем обратиться к небольшим юнит-тестам, минуя многоуровневые сквозные. Важная особенность заключается в том, что skip и ignore не тождественны и имеют разную механику. Первая функция не исключает указанные в себе тесты из итоговой отчетности, но заставляет браузер обходить их выполнение. Игнорирование работает иначе, потому что полностью деактивирует сценарий, исключая его из тестовых отчетов.

Тестовые сценарии отныне можно запустить, предварительно распределив по группам, и выполнять параллельно на разных машинах (тесты компонуются указанным браузером). Эта функция универсальна, потому как позволяет распределять заданное количество ресурсов CI для браузера. Преимущество метода распараллеливания заключается в вариативности исполнения тестов. Теперь мы можем минимизировать затраты на CI, либо наоборот, увеличить продолжительность тестирования.


Резюме
Cypress.io - отличный пример того, что действительно сложные и многофункциональные платформы состоят из множества простых и доступных инструментов. Он оснащен всем необходимым, документация позволяет при желании найти все нужные сведения, а способность воспринять их уже продиктована скиллами и знаниями конкретного специалиста. Мы, определенно, будем продолжать с ним работать: во-первых, это удобно и результативно, во-вторых – плюс для заказчиков, состоящий в том, что мы владеем технологиями, популярность которых растет.
Раз в месяц мы делаем рассылку с анонсом новых кейсов и статей, опубликованных на сайте.
Подпишитесь на обновления.
Гарантируем - никакого спама. Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой в отношении обработки персональных данных.