Я ищу способ регулярно тестировать производительность моего веб-приложения.
В частности, меня интересует время, необходимое для разрешения имен хостов, получения ответов от серверов, загрузки/рендеринга/выполнения ресурсов и т.д. Я также хочу измерять эти вещи при взаимодействии с приложением, а не только при загрузке страницы.
Я мог бы использовать Firebug или Chrome Developer Tools во время взаимодействия с моим веб-приложением вручную, но я хочу, чтобы это тестирование производительности переднего плана было частью моего непрерывного процесса интеграции. Я хочу иметь ночные результаты тестирования производительности переднего плана, так что становится легко улавливать регрессии производительности. Вот почему один из моих предварительных выводов заключается в том, что я хочу использовать существующий функциональный набор тестов Selenium/WebDriver (или подмножество набора тестов).
Итак, предполагая, что я использую Selenium для взаимодействия с моим веб-приложением, мне действительно нужен инструмент для измерения производительности интерфейса в браузере.
До сих пор я рассмотрел три варианта:
1) browserermob-proxy
Browsermob-proxy - это прокси-сервер с открытым исходным кодом, который фиксирует данные о производительности с использованием формата HAR. Он предоставляет HTTP REST API в дополнение к связям Java и NodeJS. Поскольку это прокси-сервер, который анализирует HTTP-трафик, он не дает мне никакой информации о том, что происходит в браузере (например, рендеринг и т.д.), Что меня больше всего интересует.
2) WebPagetest
WebPagetest также является программным обеспечением с открытым исходным кодом и доступен как бесплатный облачный сервис на webpagetest.org. Возможно (и не слишком сложно) настроить частный экземпляр этой службы. Я даю ему URL-адрес, и я получаю отчет об эффективности загрузки этой страницы. Тем не менее, это не позволяет мне контролировать приложение, пока я общаюсь с ним, что очень важно - особенно в одностраничном веб-приложении с большим количеством вещей, происходящих на стороне клиента, - как у меня.
3) Compuware APM AJAX Edition (ранее DynaTrace AJAX Edition)
Compuware APM AJAX Edition является бесплатным (как в бесплатном) проприетарным программным обеспечением, которое использует плагины браузера для захвата информации из браузера во время просмотра, что означает, что он может автоматически собирать данные во время выполнения тестового набора Selenium.
Довольно легко автоматизировать его и интегрировать его в процесс непрерывной интеграции, но отчетность оставляет желать лучшего. Результаты испытаний сгруппированы в "сеансы", который является периодом из окна браузера, который открывается до его закрытия. Нет функциональности для сравнения результатов тестов с течением времени, что затрудняет отслеживание прогресса и регрессию catch.
Compuware APM AJAX Edition - лучшая альтернатива, которую я видел до сих пор - но там должно быть что-то лучше - правильно?