2011-01-18 13 views
16

Estoy a cargo de probar una aplicación web empresarial que hace un uso intensivo de AJAX. Necesito construir un sistema que permita la ejecución continua de pruebas sin intervención humana. Actualmente estoy interesado principalmente en la prueba de carga, pero quiero que los mismos scripts utilizados para generar carga se utilicen en pruebas funcionales.Navegador sin cabeza real

Actualmente para la prueba de carga Estoy utilizando el grinder. Grabamos guiones y luego los procesamos para manejar, entre otras cosas, las solicitudes asincrónicas. Este sistema funciona por ahora; sin embargo, los guiones son delicados y no puedo mantenerlos durante nuestro ciclo de desarrollo. Necesito poder 'ejecutar un navegador' a través de un lenguaje de programación que resuma los detalles de html y javascript, pero debe ser sin cabeza. En otras palabras, si mi script de prueba se rompe, debe representar una ruptura real de la aplicación. Ejecutar Firefox en xvfb no funciona, ya que Firefox todavía usa demasiados recursos, incluso en una máquina sin linux corriendo con xvfb. Intenté conducir Firefox con Webdriver en el servidor x sin cabeza.

He estado trabajando en HTMLUnit durante días ya que esta es la solución ideal. He estado escribiendo controladores HTMLUnit en Jython y, por lo tanto, puedo usarlos con la rectificadora. Desafortunadamente, me estoy encontrando con errores de JavaScript (que no son errores reales en firefox/Chrome/IE) y creo que estoy al final del camino para esto. En cualquier caso, estoy al tanto de HtmlUnit y realmente necesito una alternativa.

Sé que hay algunas otras soluciones (envjs y zombie.js); sin embargo, no sé cómo se desarrollaron estas tecnologías y no quiero perder otra semana yendo por un callejón sin salida.

¿Qué tan difícil sería tomar el código fuente para Firefox o Webkit y comentar todas las llamadas de renderizado/GUI y crear un verdadero explorador sin cabeza? Ha hecho esto? ¿Sería más fácil hacer esto con uno que con otro? Honestamente, no puedo entender por qué esto no se ha hecho ya, así que supongo que es mucho más difícil de lo que anticipo.

Supongo que si puedo obtener un navegador realmente sin cabeza con características de rendimiento razonables (tengo una gran flota de servidores para resolver este problema, pero no es lo suficientemente grande para Firefox real con renderizado GUI) entonces me estableceré .

+0

Ha considerado el uso de un servicio comercial como BrowserMob (http://browsermob.com/performance-testing) o Gómez (http://www.gomez.com/products-solutions/products/load-testing/). Aunque no es barato, parece mucho más fácil que tratar de hackear Firefox/Webkit. –

+0

Realmente no he investigado estos servicios pero he oído hablar de ellos. Me apasiona armar un sistema interno preferiblemente con tecnología de código abierto. Tenemos muchos servidores de prueba y realmente quiero utilizarlos. Gracias por la sugerencia, sin embargo. Gracias – user573225

Respuesta

1

Es posible que pueda aprovechar algunas de las herramientas de prueba de unidades de JavaScript disponibles para armar el tipo de entorno que necesita.

Por ejemplo, me he dado cuenta que la carga de env.js en rhino da una falsa navegador aceptable para probar la mayoría de JavaScript. No está a la altura de ciertos atributos DOM, como elementos de tamaño relativos a su ventana, pero eso no ha sido un problema grave en mi experiencia.

Ver también:

+0

, que podría intentar env.js con Rhino siguiente. Esto debería permitirme integrarme también con el framwork de prueba de carga basado en Java. ¿Alguna idea sobre cómo se comparará con HtmlUnit? ¿Alguna experiencia con zombie.js? – user573225

+0

De lo que recuerdo, la última vez que miraba a HtmlUnit que no tenían el soporte de JavaScript que necesitaba pero que puede no ser el caso. No he probado zombie.js, pero vale la pena investigarlo, gracias por señalarlo. – Jonah

0

Tenga una mirada en WebKitDriver. El proyecto incluye la implementación sin cabeza de WebKit.

14

enter image description here

Esto se ha hecho por los chicos de http://www.phantomjs.org/.En sus propias palabras:

PhantomJS es un WebKit sin cabeza con JavaScript API. Tiene soporte rápido y nativo para varios estándares web: manejo de DOM, selector de CSS, JSON, Canvas y SVG.

PhantomJS es una solución óptima para la prueba sin cabeza de aplicaciones basadas en web, raspado sitio, páginas de captura, render SVG, PDF Converter y muchos otros casos de uso.

PhantomJS es creado por Ariya Hidayat

+5

¿qué hay de Gecko? – Rolf

+1

www.slimerjs.org aunque no es sin cabeza y sin XVFB –

1

Tome un vistazo a LoadBooster. Es un servicio de prueba de carga basado en la nube que utiliza el navegador sin cabeza PhantomJS para probar sitios web. Descargo de responsabilidad: yo trabajo para LoadBooster.

Cuestiones relacionadas