HtmlUnit + Selenium в рамках производства - PullRequest
12 голосов
/ 30 января 2012

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

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

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

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

Ответы [ 3 ]

11 голосов
/ 14 февраля 2012

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

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

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

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

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

5 голосов
/ 09 февраля 2012

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

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

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

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

2 голосов
/ 30 января 2012

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

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

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

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

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

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

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

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

...