2012-01-30 2 views
11

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

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

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

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

ответ

9

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

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

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

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

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

+0

Спасибо, это был ответ, который я искал. – Steven

2

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

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

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

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

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

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

  • Если да, следует ли автоматизировать?

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

+1

Я не спрашиваю, должен ли я тестировать свой экземпляр для производства с помощью webdriver, я спрашиваю, использует ли webdriver в качестве производственного кода. Моя производственная среда использует webdriver для взаимодействия с другими веб-сайтами, потому что они используют обширный javascript. – Steven

5

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

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

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

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

+0

phantom-js выглядит интересным, но не является подходящей заменой для htmlunit (пока), потому что отсутствует интеграция webdriver. – Steven

+0

Возможно. Я сам не использую webdriver. – maximdim