HtmlUnit + Selenium в производстве

В настоящее время я использую HtmlUnit и Selenium для управления им (WebDriver) в моем производственном коде.

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

Мне интересно, подходят ли эти библиотеки для производственной среды или не рекомендуются. Это трудно найти через Google из-за огромного количества информации об автоматизированном тестировании, а не о том, как я их использую.

Я понимаю, что это довольно общий вопрос, но я ищу совета по этим библиотекам и потенциально лучшим альтернативам.


person Steven    schedule 30.01.2012    source источник


Ответы (3)


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

Мы предпочитаем драйвер Firefox (тяжелее, чем HTMLUnit, и его сложнее настроить), и нам пришлось настроить сетку, чтобы понять, сколько экземпляров мы можем запустить. Наш максимум для стабильности был 1 на ядро

Наши экземпляры selenium/webdriver работают круглосуточно и без выходных уже 2 года (1 год с selenium 1, а другой постепенно мигрирует selenium 2/WebDriver) и с соответствующим мониторингом (вы должны отслеживать использование памяти/использование ЦП) и кучей нагрузочное тестирование, мы достигли хорошего уровня, когда мы несколько месяцев не перезапускали процесс

Мы также широко использовали HTMLUnit и в равной степени довольны этой библиотекой.

Суть моего поста: ДА, эти библиотеки готовы к работе. Но, как и в случае со всем производственным программным обеспечением, вам придется протестировать их использование, чтобы найти подходящую конфигурацию для оптимальной стабильности. Я рекомендую вам использовать Selenium Grid в производстве, это отличный способ распараллелить процесс.

person Grooveek    schedule 14.02.2012
comment
Спасибо, это был ответ, который я искал. - person Steven; 16.02.2012

Я использую HtmlUnit для чего-то подобного в производстве, и у меня было немало проблем, в основном связанных с производительностью. В настоящее время я перешел на снапшот-версию HtmlUnit 2.10, в которой были реализованы некоторые важные для меня улучшения производительности (например, замена ArrayList.contains() на HashSet.contains() на DomNode.addDomChangeListener()).

Тем не менее, загрузка ЦП довольно высока на страницах с большим количеством JavaScript. Как правило, я не могу запустить более 10 из них одновременно на двухъядерном Linux-боксе. Я считаю, что HtmlUnit использует Rhino (движок JavaScript) только в режиме интерпретатора, что довольно медленно. Кроме того, вы должны быть осторожны с освобождением всех ресурсов, используемых HtmlUnit, чтобы избежать утечек памяти.

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

Еще один многообещающий подход — это phantom-js, который представляет собой безголовую версию браузера WebKit, нативное приложение, которое работает намного быстрее. при запуске JavaScript.

person maximdim    schedule 09.02.2012
comment
phantom-js выглядит интересно, но не является подходящей заменой htmlunit (пока), потому что в нем отсутствует интеграция с веб-драйвером. - person Steven; 09.02.2012
comment
Наверное. Сам вебдрайвером не пользуюсь. - person maximdim; 09.02.2012

Как правило, используйте свое тестовое «чувство интуиции» по этому поводу. Что делает WebDriver и HTMLUnit, так это то, что он имитирует реального пользователя, выполняющего некоторые действия на веб-странице.

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

Да, это общий ответ на общий вопрос, но попробуйте следующее:

Соберите людей, ответственных за веб-приложение, и спросите их:

  • Должен ли он быть протестирован на производстве? (поэтому всегда есть небольшой шанс, что некоторые клиенты увидят эти тестовые данные)

  • Если да, то что нужно тестировать на производстве?

  • Если да, то должна ли она быть автоматизирована?

И тогда у вас есть ответ ;)

person Pavel Janicek    schedule 30.01.2012
comment
Я не спрашиваю, должен ли я тестировать мой производственный экземпляр с помощью веб-драйвера, я спрашиваю, можно ли использовать веб-драйвер в качестве производственного кода. Моя производственная среда использует веб-драйвер для взаимодействия с другими веб-сайтами, потому что они используют обширный javascript. - person Steven; 31.01.2012