2012-01-30 21 views
11

Actualmente estoy usando HtmlUnit y Selenium para conducirlo (WebDriver) dentro de mi código de producción.HtmlUnit + Selenium en producción

Escalo e interactúo con varios sitios web programáticamente con estas bibliotecas y estoy teniendo cierto éxito y no tengo problemas de memoria (lo que garantiza que las sesiones se limpien siempre).

Me pregunto si estas bibliotecas están bien para un entorno de producción o se recomiendan en contra. Esto es difícil de encontrar a través de Google debido a la enorme cantidad de información sobre pruebas automatizadas en lugar de cómo las estoy usando.

Me doy cuenta de que esta es una pregunta bastante genérica, pero estoy buscando asesoramiento sobre estas bibliotecas y potencialmente mejores alternativas.

Respuesta

9

WebDriver y Selenium son perfectamente adecuados para el entorno de producción. Los uso bastante extensamente durante 2 años en una red distribuida de múltiples máquinas/centros de datos múltiples y no tuve absolutamente ningún problema de rendimiento ni estabilidad que no pudiéramos haber afrontado.

Nuestro controlador preferido es el de Firefox one (más pesado que HTMLUnit, y más difícil de configurar), y tuvimos que ajustar la cuadrícula para comprender cuántas instancias podemos ejecutar. Nuestro máximo de estabilidad fue de 1 por núcleo

Nuestras instancias de selenium/webdriver funcionan 24/7 desde hace 2 años (1 año con selenio 1 y el otro selenio 2/WebDriver migratorio de forma incremental) y con un control adecuado (usted debería monitorear el uso de la memoria/uso de la CPU) y un montón de pruebas de carga, habíamos alcanzado el buen nivel en el que hemos experimentado varios meses sin reiniciar un proceso

También hemos usado HTMLUnit extensivamente, y estamos igualmente satisfechos con esta biblioteca

El punto esencial de mi publicación es: SÍ, estas bibliotecas están listas para producción. Pero, como todo software de producción, deberá comparar su uso para encontrar la configuración adecuada para la estabilidad óptima. Te recomiendo que uses Selenium Grid en producción, que es una excelente forma de paralelizar el proceso

+0

Gracias, esta fue la respuesta que estaba buscando. – Steven

2

Por lo general, use su "sensación instintiva" sobre eso. Lo que hace WebDriver y HTMLUnit es que simula el usuario real que realiza algunas acciones en la página web.

Mi intuición personal dice que debería hacer menos pruebas de producción, como sea posible. Personalmente, utilizaría estas herramientas solo para la verificación, si mi aplicación web aún está activa.

Sí, su respuesta genérica para la pregunta genérica, pero intente esto:

se reúnen alrededor de las personas responsables de la aplicación web y pedirles que:

  • En caso de que sea probado en la producción? (por lo que siempre hay una pequeña posibilidad de que algunos clientes vean esos datos de prueba)

  • En caso afirmativo, ¿qué debería probarse en la producción?

  • En caso afirmativo, ¿debería ser automatizado?

y entonces usted tiene la respuesta;)

+1

No estoy preguntando si debo probar mi instancia de producción con webdriver, estoy preguntando si usar webdriver como código de producción es correcto. Mi entorno de producción usa webdriver para interactuar con otros sitios web porque utilizan JavaScript extenso. – Steven

5

estoy usando HtmlUnit por algo similar en la producción y he tenido un poco de problemas - en su mayoría relacionados con el rendimiento. Actualmente cambié a la versión instantánea de HtmlUnit 2.10 donde se implementaron algunas mejoras de rendimiento importantes para mí (por ejemplo, reemplazando ArrayList.contains() con HashSet.contains() en DomNode.addDomChangeListener()).

Aún así, la carga de la CPU es bastante alta en páginas pesadas de JavaScript. Normalmente, no puedo ejecutar más de 10 de ellos simultáneamente en la caja de Linux de doble núcleo. Creo que HtmlUnit usa Rhino (motor de JavaScript) en modo de intérprete solamente, lo cual es bastante lento. Además, debe tener cuidado al liberar todos los recursos utilizados por HtmlUnit para evitar pérdidas de memoria.

Con todo, es indudable que HtmlUnit se diseñó para ejecutar casos de prueba relativamente efímeros y aplicaciones de servidor que no duraban mucho tiempo. Es posible modificarlo lo suficiente para que sea manejable, pero sin duda podría haber sido mejor.

Otro enfoque que encontré prometedor es phantom-js, que es la versión sin cabeza del navegador WebKit, una aplicación nativa que es mucho más rápida en la ejecución de JavaScript.

+0

phantom-js parece interesante pero no es un reemplazo adecuado para htmlunit (todavía) porque le falta integración de webdriver. – Steven

+0

Probablemente. No uso webdriver yo mismo. – maximdim

Cuestiones relacionadas