Это зависит от того, на чем вы фокусируетесь, функциональности или производительности.
Функциональность
При мониторинге функциональности вы стремитесь автоматически гарантировать, что веб-приложение по-прежнему работает правильно. Обычно это больше часть непрерывного процесса интеграции и меньше часть производственного мониторинга. Это можно сделать с помощью HtmlUnit, Selenium или WebDriver. HttpUnit больше не рекомендуется (API более низкоуровневый, JavaScript не так хорошо поддерживается, менее широко используется, меньше исправлений ошибок и улучшений).
HtmlUnit имитирует браузер. Таким образом, вы никогда не можете быть уверены, что ваше приложение ведет себя точно так же в реальном браузере. Это особенно важно для сложных приложений Ajax. Это сравнимо со всеми небольшими несовместимостями между FireFox и Internet Explorer. Плюсы: Безголовый, простой для понимания. Минусы: риск необнаруженной несовместимости.
Selenium удаленно управляет настоящим браузером. В нашей установке мы не могли использовать его без головы, особенно с Internet Explorer. Но если вы встроите его в виртуальную машину, он будет работать без головы. Если ваше приложение доступно через общедоступный Интернет, вы можете даже использовать Selenium Grid и предварительно настроенную виртуальную машину из Amazon Elastic Cloud EC2. Плюсы Selenium: совместимость с реальным миром, простота написания сценариев. Минусы: безголовое только в виртуальной машине, снижение производительности, более сложная настройка среды выполнения, моделирование нагрузки одновременно работающих пользователей только в облаке.
До версии 1.5 Selenium использует часть JavaScript под названием Selenium Core для управления браузером. Если ваше приложение имеет ограничения безопасности для JavaScript, Selenium может работать некорректно.
WebDriver использует для каждого браузера определенный интерфейс, например для FireFox расширение и для Internet Explorer Automation Controls. Кроме того, он использует операционную систему, например. для имитации нажатия клавиш. Он более мощный, надежный и надежный, чем Selenium Core. Начиная с Selenium версии 2.0, WebDriver интегрирован в Selenium. Но Selenium 2.0 все еще находится в стадии бета-тестирования.
Производительность
Вы упоминаете об измерении с помощью таймера и упоминаете время рендеринга. При мониторинге производительности веб-приложения вы хотите получать предупреждения, когда использование приложения в реальном мире становится невозможным из-за слишком длительного времени ответа.
В этом сценарии вас обычно не интересуют точные результаты в миллисекундах. Вы все еще можете использовать один из инструментов, упомянутых выше. Например, браузер с Selenium Core работает медленнее, чем реальный браузер, но это не имеет большого значения для непрерывного мониторинга.
Если вам абсолютно необходимы точные измерения, ничего из вышеперечисленного не подходит. Вы должны различать продолжительность на стороне клиента и продолжительность на стороне сети плюс на стороне сервера.
Длительность на стороне клиента необходима для рендеринга HTML и выполнения JavaScript. Это не зависит от количества одновременно работающих пользователей. Вы можете измерить его один раз, например. с помощью Firebug. Вам не нужно следить за ним постоянно.
Сеть плюс продолжительность на стороне сервера необходимы для передачи запроса на сервер, обработки запроса и генерации ответа и передачи ответа клиенту. Они различаются в зависимости от использования сети и количества одновременных пользователей. Вы можете точно измерять и контролировать их, например, с помощью JMeter. Но в случае сложной функциональности Ajax моделирование правильных клиентских запросов в JMeter является сложной задачей. Плюсы JMeter: точное измерение, возможность нагрузить приложение многими одновременными пользователями. Минусы: Ограничено для Ajax, много усилий для построения запроса.
person
Martin Ackermann
schedule
01.04.2011