Программное обеспечение с каждым годом становится всё сложнее, и программирование сайтов/веб-приложений – не исключение. Что интересно, в работе для ускорения процесса сборки всё чаще используются различные фреймворки и библиотеки, но они же делают тестирование и отладку тяжелее.
Ниже поговорим о том, какие инструменты тестирования можно использовать для всестороннего изучения сайтов (своих и сайтов конкурентов): нагрузочное тестирование, тестирование безопасности, проверка макетов, отладка и т.п. Но самое интересное – почему для многих инструментов понадобятся прокси и где их взять.
Проблемы при тестировании веб-сайтов
Первая и самая основная проблема современных сайтов – геораспределённая структура. Всё сводится к тому, что клиентам из разных регионов и даже из конкретных городов нужно показывать раздельный контент. Ошибки могут возникать на всех этапах: на шаге определения расположения пользователя (например, от региона будет зависеть язык интерфейса и контент), на этапе отрисовки макета (какие-то текстовки или изображения, привязанные к конкретному региону, могут приводить к смещению сетки), на этапе кеширования (данные клиентам будут отдаваться устаревшими) и т.п.
Как можно своевременно выявить и исправить такие ошибки? С одной стороны, можно внедрить систему обратной связи и автоматизированные тесты, но они не всегда показывают достаточную эффективность. Лучший и самый надёжный способ – запустить сайт или веб-приложение и лично убедиться в работоспособности кода.
Вторая важная проблема – получение обратной связи по нововведениям. Часто случается так, что работа над программой (web-сайтом или web-приложением) не останавливается, фичи внедряются одна за другой: перерабатывается дизайн, добавляются новые функции и т.п. В итоге, в параллельной работе может находиться сразу несколько версий сайта или приложения.
Не все нововведения могут нравиться пользователям, и это нормально. Но для того, чтобы разработчики могли понять, что нужно оставить, а что откатить, им нужна обратная связь от конечных пользователей. Получить её можно на основе системы отзывов и оценок (например, как в случае с индексом вовлечённости).
Но самый эффективный способ – получение данных из автоматических метрик. Правда, для правильности тестирования нужно воссоздать условия, максимально приближенные к реальным: расположение клиента, разрешение его экрана, тип устройства и т.п. Тогда можно быстро получить актуальные данные по времени загрузки, по наличию ошибок в выводе, по отработке форм ввода и пр. Участие реального клиента даже не потребуется.
Третья проблема – огромный парк устройств пользователей. Даже если код сайта или веб-приложения отрабатывает исправно на одной платформе (в конкретном браузере), это не значит, что он будет работать также и на всех остальных платформах.
Чтобы протестировать сайт в разных браузерах и на разных типах устройств, нужен целый парк виртуальных машин и пул прокси для эмуляции местоположения клиентов. Но прокси для тестирования сайтов – не единственный инструмент. Они должны работать в связке с другим ПО.
Четвёртая проблема – безопасность и производительность. Эти свойства часто идут бок о бок, так как многие атаки на сайты или веб-приложения используют превышение допустимой нагрузки на сервер. В момент отказа оборудования можно обойти определённые механизмы защиты и внедрить вирусы/руткиты. Не менее опасно для бизнеса бездействие (то есть неработоспособность) сайта. Даже пара часов простоя может вылиться в серьёзные убытки, как финансовые, так и репутационные.
Опять же, реальное нагрузочное тестирование невозможно провести только в синтетических тестах – нужно использовать устройства клиентов, а лучше сеть из прокси.
Инструменты тестирования сайтов и веб-приложений
Как можно было заметить, прокси – нужны для многих задач, но сами по себе они не заменяют, а только дополняют другие инструменты web-тестирования. О таких инструментах мы и расскажем ниже.
На всякий случай обозначим, что инструменты тестирования могут быть браузерными или облачными, представлять собой специальные программные комплексы и скрипты автоматизации (фреймворки, библиотеки, IDE и т.д.). Как можно догадаться, браузерные инструменты тестирования работают в паре с браузером, но подходят они только для сайтов и web-приложений. Например, мобильные приложения или десктопный софт, имеющий API для подключения к удалённым серверам, в них отладить и протестировать не получится.
Итак, топ инструментов.
Selenium
Selenium – это целый комплекс программных решений для автоматизации тестирования. Главным элементом здесь выступает web-драйвер. То есть библиотека, которая позволяет подключаться к выбранному браузеру и управлять им с помощью команд (по API). Она из обычного браузера делает безголовый (про headless-браузеры).
В отличие от других решений автоматизации, Selenium умеет коннектиться практически к любым браузерам, а не только к Хрому. Плюс, у Selenium есть решения для автоматизации управления большим числом экземпляров браузеров, работающих каждый в своём окружении, например, удалённо (в облаке) – по аналогии с оркестраторами для управления контейнерами виртуализации.
Selenium позволяет организовать браузерное тестирование на любых современных платформах: Linux, MacOS, Windows, iOS, Android и даже Blackberry.
Для подключения к API могут использоваться разные языки программирования (для них есть готовые библиотеки): Java, JavaScript, Python, Kotlin, C #, Ruby. Плюс, можно написать свои библиотеки и коннекторы.
Selenium чаще остальных применяется при парсинге динамических сайтов – тех, что используют большой объём JavaScript-кода и не подходят для прямого парсинга. А также при парсинге экрана.
Selenium из коробки умеет работать через прокси. Использование Selenium полностью Бесплатное.
Из минусов: достаточно высокий порог входа и ряд проблем, связанных с программной отрисовкой интерфейсов (то есть сайты и веб-приложения, задействующие аппаратный рендеринг, здесь качественно протестировать не получится).
Подробнее о других библиотеках для парсинга: для Python, для Golang.
Playwright
Playwright (в переводе «драматург», по ассоциации с оркестраторами) – это комплексная среда для web-тестирования от компании Microsoft.
Playwright отлично показывает себя при функциональном тестировании, а также при тестировании API сайтов и веб-приложений.
Во многом решение похоже на Selenium: оно интегрируется с разными языками программирования, поддерживает работу на разных программных платформах (включая эмуляцию мобильных и планшетов), коннектится к разным версиям браузеров (Chromium, WebKit, Firefox), из коробки умеет работать через прокси.
В дополнение Playwright снабжён большим количеством утилит для отладки.
В отличие от Selenium, Playwright поддерживает такие языки программирования, как TypeScript и .NET.
К минусам можно отнести необходимость обязательной установки и использования NodeJS, а также слабое сообщество (как итог – мало мануалов помимо официальной документации).
Puppeteer
Puppeteer – это высокоуровневая библиотека для организации API при управлении Headless-браузером Chrome. Так как за разработкой стоит команда Google, библиотека лучше других работает с официальным API Хрома.
Puppeteer представляет собой Node.js библиотеку, поэтому поддерживает скрипты автоматизации только на языке JavaScript.
С одной стороны, Puppeteer существенно проще основных своих конкурентов, но с другой – он идеален для несложных и узкопрофильных задач, например, для отладки браузерных расширений, для создания скриншотов (страницы сохраняются в PDF буквально одной командой), а также для типовых задач парсинга.
При этом подключение к браузеру производится без каких-либо веб-драйверов (задействуется оригинальный консольный интерфейс Хрома – DevTools). Puppeteer умеет работать через прокси.
Из всего вышесказанного вытекают основные недостатки решения: Puppeteer подходит только для работы с браузерами Хром/Хромиум и только для одного языка программирования (JavaScript), у него нет встроенных инструментов для организации удалённого управления большим числом экземпляров Хрома (нужны дополнительные «костыли»).
Lighthouse
Лучшее бесплатное решение на рынке для автоматизации тестирования производительности сайтов и web-приложений. Утилита имеет открытый исходный код и поддерживается крупнейшей IT-корпорацией (Google).
С помощью Lighthouse можно:
- Провести тестирование скорости загрузки и детально проанализировать этапы отрисовки контента.
- Организовать аудит производительности сайтов/веб-приложений.
- Обеспечить массовую индикацию о проблемных местах сайта или отдельных его страниц.
- Получить детальные отчёты по работе страниц и web-сайтов.
- Выявить сторонние ресурсы, блокирующие рендеринг.
- Найти неиспользуемые CSS-стили.
- Сократить объём кода скриптов и CSS.
- Обнаружить многократные редиректы.
- Провести частичный SEO-аудит (найти отсутствующие мета-теги, проблемы со скоростью загрузки, неправильные коды ответа сервера и пр.).
Инструмент Lighthouse встроен во все браузеры Хром (в качестве инструмента для разработчиков), но им же можно пользоваться в виде Node-модуля в коде или через интерфейс командной строки. Плюс, предоставляется профильный web-сервис (ничего и никуда устанавливать не нужно).
Фактически именно Lighthouse работает в основе сервиса Google PageSpeed Tools со всеми вытекающими следствиями.
Из минусов Lighthouse: решение сложно кастомизируется. Фактически вы получаете на выходе готовые варианты отчётов, из которых ещё нужно как-то извлечь конкретные данные. То есть для них нужно написать свой вариант парсера. Чтобы текущие замеры производительности можно было сравнивать с предыдущими, нужно дополнительно организовать специальную базу данных. Сам Lighthouse никакого учёта не ведёт.
***
Это только часть из популярных инструментов тестирования. Например, к сюда же можно отнести следующие библиотеки и фреймворки: Cypress, Cucumber, Katalon, JMeter, TestComplete, Pingdom, Watir, Ranorex, Appium, LambdaTest, LoadRunner, WebLOAD, Testsigma, NeoLoad, GTmetrix, WebPageTest и т.д.
Зачем вам нужны прокси для веб-тестирования?
Прокси-сервер – это некая точка в сети, которая от своего имени может транслировать ваши запросы. Иными словами, с помощью прокси можно изменить своё местоположение, тип устройства, локаль, часовой пояс и другие параметры. Как раз по ним и анализируются клиенты веб-сайтов.
В итоге, если задействовать большой пул прокси, вам не нужно физически присутствовать на другом конце света, чтобы проверить как ваша веб-страница рендерится в браузере или как срабатывают блоки, которые должны показываться в конкретном регионе.
Плюс, можно:
- Проверить скорость загрузки и наличие региональных ограничений.
- Уточнить качество работы сайта и наличие ошибок, возникающих из-за смены месторасположения пользователя.
- Выявить проблемы с безопасностью и производительностью.
- Проверить показ рекламных объявлений.
- Исключить автоматическую блокировку средств отладки (когда ваш IP-адрес попадёт в черный список).
- И т.п.
Непрерывная интеграция для автоматизации тестов
Чтобы обеспечить оперативную ротацию прокси, их поиск по заданным критериям, а также другие процедуры управления прямо из кода программы, нужен специальный интерфейс – API.
С помощью кастомизации параметров портов прокси, наши клиенты могут, например, подобрать прокси-серверы из определённого города или региона, заменить IP-адрес или, наоборот, постараться удержать его на время всей сессии, сменить тип IP-адреса (мобильный или десктоп).
IP-адреса можно выгружать в разных форматах и подключать к профильному софту.
Но мы понимаем, что для непрерывного процесса тестирования нужно больше возможностей автоматизации, поэтому предоставляем готовые варианты интеграции наших прокси-серверов с вашим кодом и системами тестирования.
В разделе с документацией вы можете посмотреть примеры кода для интеграции с:
Обратите внимание, часть задач по парсингу и мониторингу конкурентов у нас можно реализовать вообще без кода. Подробнее – в описании услуг SERP Scraper и E-Commerce Scraper.
Выводы и рекомендации
Как можно догадаться, от качества прокси будет зависеть многое: конфиденциальность, скорость загрузки, точность геотаргетинга, удобство ротации и прочее.
Следовательно, выбирать прокси нужно только высокого качества и с достаточным географическим покрытием, как в случае с Froxy.
Мы предлагаем пул из более чем 8 млн. IP-адресов по всему миру (200+ локаций). Точность таргетинга – до уровня города и провайдера связи. Ротация прокси осуществляется по времени или по команде. Интеграция с рабочим софтом подробно описана в документации.
Для всестороннего тестирования наших прокси предоставляются специальные триал-пакеты.