HtmlUnit + селен внутри производства

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

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

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

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

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