Selenium vs Playwright: нехайповый разбор

За последние пять лет в ИТ-индустрии наблюдается глупая тенденция «задвигания» тестирования на задворки. 

Улучшает ли она практики, связанные со стратегией тестирования? Нет. 

Обеспечивает ли она всегда «зеленый» билд, если нет ошибок? Нет. 

Гарантирует ли качество автотестов? К сожалению, нет.

Способствует ли она достижению совершенства за счет командного взаимодействия и построения отношений между управлением продуктом, разработкой и QA? Мне бы очень этого хотелось. 

Я вижу глупую тенденцию, когда команды выбрасывают Selenium-тесты, создававшиеся годами, и переписывают их на Playwright. Вероятно, они начитались тех идиотских кликбейтных статей, в которых сравнивают эти два фреймворка, суть которых сводится к поливанию грязью Selenium.

Реальная проблема: древние тесты и практики

Истинная причина кроется не в инструменте: это нестабильные тесты, меняющиеся требования к продукту и забагованный код тестируемого приложения (AUT). 

Если ваши тесты нестабильны, совершенно неважно, стабилен ли ваш продукт: никто не будет доверять вашим автотестам. Как только доверие потеряно, его очень трудно вернуть.

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

Справедливости ради, в Microsoft проделали отличную работу, сделав Playwright чрезвычайно удобным: тесты можно разрабатывать, выполнять, отлаживать и поддерживать прямо в среде разработки (IDE), и запускать целые наборы не составляет труда.

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

Самые идеальные инструменты НЕ МОГУТ компенсировать отсутствие тестовой стратегии. Но в небольших проектах они могут дать тестировщикам передохнуть на достаточно долгое время, до следующего проекта. Мы называем это Resume-driven Development.

Если уж вы сравниваете инструменты, то убедитесь, что вы ищете не просто «быстрее».

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

Сравниваем вдумчиво: Selenium vs Playwright

Сходства

КритерийSeleniumPlaywright
Предназначен для функционального тестирования в браузерахДаДа
Масштабируется для параллельного тестированияДаДа
Предоставляет логи, видео, скриншоты и т.д.ДаДа
Использует распространенные языки программированияДаДа

Различия

КритерийSeleniumPlaywright
Работает ли с реальным браузеромДа. Selenium работает с реальным исполняемым файлом браузера.Да. Может использоваться с Chrome и Edge, но в основном запускается безголово или модифицируя движок (Chromium для Chrome, Webkit для Safari, Gecko для Firefox).
Рекомендованный стандарт W3CДа. Microsoft, Google, Apple и Mozilla работали с проектом Selenium для разработки отраслевого стандарта автоматизированного взаимодействия с браузером.Нет. Использует Chrome Devtools Protocol (CDP) для взаимодействия с Chromium и эмулирующий CDP-слой для Firefox и WebKit. Используется Webkit-специфичный API для симуляции взаимодействий в Safari.
Поддерживается вендорами браузеровДа. Chrome, Firefox, Edge и Safari поддерживают совместимость со стандартом WebDriver благодаря участию вендоров.Нет. Команда Playwright поддерживает как API для взаимодействия с движками браузеров, так и языковые биндинги для Playwright.
Обратная совместимостьДа. Текущая версия Selenium работает со всеми версиями браузеров, начиная с 2014 года.Нет. Версии Playwright «привязаны» к конкретным версиям браузеров. Это означает, что вы выбираете, какая версия Playwright совместима с нужной версией браузера/движка/устройства, и поддерживаете эти версии обновленными.
Пакетный ли фреймворк (Batch framework)Нет. Хотя стандарт WebDriver BiDirectional находится в разработке (классический Selenium использует пакетное тестирование на стороне клиента), текущий протокол — это полный цикл REST-запроса и ответа, требующий значительного сетевого трафика.Да. Скрипты загружаются и выполняются внутри драйвера/клиента Playwright. Это позволяет группировать несколько команд для выполнения, без необходимости обмена данными между тестовым скриптом и браузером для каждой команды.
Дружественный к тестированию фреймворк («Test-friendly» framework)Нет. Selenium был создан как объективный, нейтральный метод управления браузером, где поощряется создание абстракций.Да. Playwright был специально разработан как целенаправленный инструмент для тестирования.
Безголовый режим (Headless)Нет. Хотя Selenium умеет запускать браузер в безголовом режиме, это не является его основным предназначением как полнофункционального инструмента «черного ящика». Тесты не обязательно выполняются быстрее.Да. Все тесты Playwright по умолчанию запускаются в безголовом режиме. Когда используются «полные» исполняемые файлы для Chrome, Edge, Firefox или для webkit2 с PyPW, то вызовы оптимизируются, что делает Playwright значительно быстрее, так как большая часть работы, связанной с движком рендеринга браузера, пропускается.
Поддерживается ли крупной корпорациейНет. Selenium разрабатывается небольшой группой энтузиастов-волонтеров с момента его создания, они тратят свое свободное время на создание инструмента, используемого миллионами тестировщиков.Да. Microsoft приняла во владением проект Playwright и вложила значительные средства в его разработку и развитие силами своих штатных инженеров и евангелистов. Вы можете читать и скачивать код, но он не является по-настоящему «открытым» в плане вклада, так как вклад вносят только члены команд Microsoft.

Выводы

Учитывайте особенности вашего проекта, опыт команды и долгосрочную стратегию тестирования. 

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

Для старых стабильных проектов с большой Selenium-инфраструктурой велика вероятность того, что миграция вообще не потребуется. 

В остальных случаях наиболее прагматичным подходом может быть постепенная миграция или параллельное внедрение.

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

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

Marcus Merrell, Test Strategist в SauceLabs

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

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

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

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

Мы в Telegram

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

? Популярное

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

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

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

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

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

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

live

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