2012-08-28 17 views
5

Actualmente estoy desarrollando una aplicación javascript de una página usando Sinatra Ruby en el lado del servidor y Backbone.js, jQuery, jQuery UI para el lado del cliente. El objetivo principal de la aplicación es permitir que un cliente vea/edite diferentes tipos de elementos, siendo cada vista de artículo una forma más o menos complicada.javascript pruebas de integración para aplicaciones de una página

Para asegurarse de que todo funciona bien tengo la intención de hacer:

  • pruebas unitarias utilizando QUnit
  • pruebas funcionales/integración

¿Qué marcos/herramientas me recomiendan para las pruebas de integración en este caso ? Empecé con Selenium pero no me gustó demasiado. Acabo de empezar a ver PhantomJS y CasperJS y me parecen muy buenos para cosas básicas como navegar, hacer clic en enlaces, ...

¿Cuál es tu consejo?

Respuesta

1

No dijo lo que no le gustaba de Selenium, pero supongo que tiene confianza con JavaScript, por lo que mi recomendación sería usar CasperJS como herramienta principal. Funciona bien con aplicaciones web de una página, y viene con su propia herramienta de prueba. El código aún puede ser un poco complicado a veces, cuando se utilizan cláusulas wait anidadas; ocúpese de eso asegurándose de que no intente hacer demasiado en cada prueba, y si aún es complejo, refactorícese. Y no se olvide de diseño para prueba: si su selector es terriblemente complejo, considere agregar un <span id="xxxx">...</span> a su alrededor, para que sus pruebas puedan ir directamente a él.

Puede usar CasperJS con PhantomJS y SlimerJS. Mi preferencia es para SlimerJS actualmente, como:

  • PhantomJS 1.x se ha quedado atascado en un viejo WebKit (equivalente a Safari 5.1 y Chrome 13), por lo que someter a prueba las características más modernas es frustrante.
  • SlimerJS puede funcionar con el motor Gecko o directamente con una versión de Firefox que haya instalado. Esto le permite configurar un perfil de Firefox con complementos adicionales, certificados de seguridad, etc.
  • SlimerJS está escrito en JavaScript, por lo que es más fácil hackearlo si lo necesita.

Una vez PhantomJS 2.0 sale (en torno a finales de 2013, es de esperar), o si su sitio no se basa en ninguna API últimos HTML5, puede ejecutar CasperJS dos veces, para conseguir una doble cobertura. (Por cierto, PhantomJS es naturalmente sin cabeza; SlimerJS necesita utilizar Xvfb, que es Linux o Mac solamente.)

Lo Selenium le da extra se puede controlar otros navegadores, es decir, en particular. (Aunque, por supuesto, para IE necesita ejecutar una máquina con Windows.) El selenio, al igual que SlimerJS, necesita que Xvfb sea sin cabeza (nuevamente, excluyendo Windows). (Por cierto, los documentos de Selenium on supported browsers no se han actualizado en años, pero asumo que las versiones posteriores de cada navegador tienen al menos el mismo soporte que se muestra allí).

+0

El primer punto en contra de Selenium es su velocidad. Es muy lento. – user337620

+0

@ user337620 Mis scripts de Selenium están dominados por el acceso a la red, por lo que nunca los he percibido como lentos, excepto para la puesta en marcha. Me di cuenta de que su pregunta era agosto del año pasado, ¡no este año! ¿A qué terminaste yendo, y estás feliz con eso? –

+0

Usé CasperJS con PhantomJS. Echaré un vistazo a SlimerJS también. – user337620

Cuestiones relacionadas