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

Мы используем инструменты, потому что хотим выполнить работу, не сойдя с ума и не разорившись.

Но как мы можем убедиться, что правильно оцениваем набор инструментов?

Нам нужен четкий набор целей и оценка того, как каждый инструмент может помочь нам достичь этих целей.

3 цели:
✔️ Возможность создавать автоматизированные тесты для сложного веб-приложения.
✔️ Возможность выполнять эти тесты во всех основных браузерах.
✔️ Тесты должны быть просты в обслуживании.

У большинства из нас есть эти цели при оценке инструмента автоматизации тестирования.

1. Конечный тест

Мне очень нравится работать с Endtest.

Это часть нового поколения инструментов интеллектуальной автоматизации тестирования.

Это означает, что вам не нужно объединять различные библиотеки и сервисы, чтобы создать среду автоматизации тестирования.

Стоит отметить, что он имеет встроенный тестовый рекордер.

После того, как вы создадите тесты, вы можете запустить их в своем кросс-браузерном облаке:

Приятным сюрпризом стало то, что я даже могу выполнять тесты в разных геолокациях по всему миру:

Тестовый пример будет состоять из разных шагов.

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

Кажется, в нем есть все строительные блоки языка сценариев:
- переменные
- повторно используемые компоненты
- операторы if
- операторы else
- циклы
- вызовы внешних служб
- подключения к базе данных

Наличие всех этих опций означает, что вы сможете автоматизировать любой сценарий.

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

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

Endtest смог справиться с этими сценариями.

Вот как выглядят результаты выполнения базового теста:

И да, он отвечает всем требованиям:

✅ Возможность создавать автоматизированные тесты для сложного веб-приложения.
✅ Возможность выполнять эти тесты во всех основных браузерах.
✅ Тесты должны быть просты в обслуживании.

Я бы сказал, что самым сильным моментом является то, что тесты просты в обслуживании, но мне также нравится тот факт, что они быстрые.

2. Селен

Selenium был первым инструментом автоматизации тестирования, о котором я когда-либо слышал.

И это было еще в 2012 году.

Я использовал его в течение нескольких лет и имел хорошие результаты.

Selenium работает с WebDrivers, разработанными самими производителями браузеров.

Это означает, что вам нужно время от времени загружать и обновлять chromedriver, geckodriver, edgedriver и т. д.

Мне нравится тот факт, что тесты Selenium можно выполнять во всех основных браузерах, включая Safari.

Selenium можно использовать вместе с Selenium Grid.

Вы сами решаете, будете ли вы устанавливать все эти браузеры локально или будете использовать провайдера Selenium Grid.

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

Selenium может выполнять любые действия, связанные с веб-элементами и страницами, но не может отправлять запросы API или подключаться к базам данных.

В нем также отсутствуют некоторые встроенные компоненты, которые есть в Endtest, такие как функции для тестирования электронной почты и тестирования SMS.

Это означает, что вам все равно нужно будет сшить вместе некоторые библиотеки и сервисы, чтобы выполнить сквозное тестирование.

Основным недостатком использования Selenium является то, что вам нужно написать много кода, а это может занять много времени и вызвать множество дискуссий.

Из-за этого кажется, что Selenium не полностью проверяет последний пункт:

✅ Возможность создавать автоматизированные тесты для сложного веб-приложения.
✅ Возможность выполнять эти тесты во всех основных браузерах.
❌ Тесты должны быть просты в обслуживании.

3. Драматург

Мне нравится тот факт, что Microsoft начала больше инвестировать в технологии с открытым исходным кодом.

И Драматург — яркий тому пример.

Playwright использует протоколы удаленной отладки браузера (например, CDP для Chromium) по каналу процесса.

Синтаксис немного проще в использовании, чем Selenium.

Используя Playwright API, вы можете взаимодействовать с браузером и элементами веб-приложения.

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

С его помощью можно перехватывать и анализировать запросы, но нельзя отправлять запросы.

Это означает, что вы не можете использовать его для правильного тестирования API.

Я действительно думаю, что инспектор драматургов действительно крут:

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

Если бы я делал этот обзор год назад, я бы расстроился, что Playwright не поддерживает запуск тестов в Internet Explorer 11.

Но так как Microsoft больше не поддерживает Internet Explorer 11, я могу просто забыть об этом.

Safari каким-то образом поддерживается, в том смысле, что они поддерживают WebKit, что не совсем то же самое, что запуск теста в браузере Safari.

Вот как это было:

✅ Возможность создавать автоматизированные тесты для сложного веб-приложения.
✅ Возможность выполнять эти тесты во всех основных браузерах.
❌ Тесты должны быть просты в обслуживании.

К сожалению, даже с упрощенным синтаксисом тесты все равно сложно поддерживать.

4. Кукловод

Puppeteer — это библиотека Node, предоставляющая высокоуровневый API для управления Chrome без дисплея по протоколу DevTools.

Теперь мы знаем, что Google создал несколько замечательных продуктов, таких как Google Search и Gmail.

Но они также создали множество продуктов, которые оказались на Кладбище Google.

Еще слишком рано говорить, в какой категории окажется Puppeteer.

Мы можем ясно видеть синтаксис со вкусом мокко.

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

Наша команда играла и с Драматургом, и с Кукловодом, и я не вижу четкой причины, по которой кто-то сейчас выберет Кукловода.

Отсутствие поддержки сообщества для Puppeteer может быть проблемой, поскольку вам может быть сложно найти ответы на StackOverflow или Reddit.

Кроссбраузерная поддержка приличная, но не отличная, поскольку она работает только в Chrome, Edge и Firefox.

Вот как это было:

✅ Возможность создавать автоматизированные тесты для сложного веб-приложения.
❌ Возможность выполнять эти тесты во всех основных браузерах.
❌ Тесты должны быть просты в обслуживании.

5. Кипарис

Я слышал об ажиотаже вокруг Кипариса.

Это действительно убийца селена?

Первый удар был, когда я узнал, что мне нужно платить, чтобы использовать все возможности и помещать свои тесты в пайплайн CI/CD.

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

Оказывается, вы не можете работать без Cypress Dashboard, который является платным компонентом.

К сожалению, я не смог автоматизировать свои тестовые сценарии с помощью Cypress из-за следующих ограничений:

  • Cypress не может тестировать несколько доменов в одном тесте
  • Cypress не может тестировать в нескольких вкладках браузера
  • Cypress не может надежно обнаруживать и взаимодействовать с элементами из фреймов

Это вызвало у меня некоторые вопросы:

Я никогда не видел, чтобы кто-нибудь использовал Cypress для комплексного сквозного теста.

Я только видел людей, использующих его для нажатия на несколько кнопок.

Итак, вот как это сделал Cypress:

❌ Возможность создавать автоматизированные тесты для сложного веб-приложения.
❌ Возможность выполнять эти тесты во всех основных браузерах.
❌ Тесты должны быть просты в обслуживании.

Не поймите меня неправильно, это может быть полезно для разработчиков, которые хотят протестировать только базовый сценарий в Chrome.

Но я думаю, что он просто не готов к реальным сложным сценариям тестирования.

Другие инструменты

Если вы знаете другие инструменты, о которых стоит упомянуть, не стесняйтесь писать о них в комментариях.

Я постараюсь ответить на каждый комментарий.

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