Chimp.js. Automated web testing por y para desarrolladores

[Chimp.js] (sencillamente Chimp de ahora en adelante) es un framework para mecanizar pruebas web construido sobre Node.js y que marcha en cualquier plataforma (OSX, Linux y Windows). Deja redactar tests en Javascript consiguiendo retroalimentación en tiempo real, en tanto que el navegador puede ejecutar los tests mientras que los escribimos.

Probar la interfaz de usuario con pruebas automatizadas

Se trata de una herramienta para crear pruebas sobre nuestra interfaz de usuario, con lo que podremos emplear estas pruebas como smoketests, pruebas de regresión, o bien aun pruebas de aceptación. Dejan demostrar que la interfaz de usuario marcha adecuadamente tras efectuar cambios en el código, más velozmente que las pruebas manuales, con lo que podemos ejecutarlas con más frecuencia.

Esta clase de pruebas se ubicarían en la cúspide de la conocida pirámide de testing (término creado por Mike Cohn y popularizado por Martin Fowler).

Piramide de testing de Mike Cohn

Lo que propón este término es que la base de nuestras pruebas de software ha de estar compuesta por tests unitarios. Son pruebas de ejecución rapidísima que se hacen cargo de contrastar que cada uno de ellos de nuestros módulos separadamente marcha.

En el próximo peldaño de la pirámide se ubicarían las pruebas de integración, con las que verificamos el adecuado funcionamiento de nuestro sistema. Estas pruebas requieren un ambiente de integración, en vez de utilizar dobles de test como hacen las pruebas unitarias, y tardan más tiempo en ejecutarse.

Para finalizar estarían las pruebas que se ejecutan sobre la interfaz de usuario de nuestra aplicación. Estas pruebas han sido de forma tradicional débiles (un cambio en la interfaz hace que haya que rehacer los tests). Esta debilidad aumenta si utilizamos herramientas de tipo grabar y reproducir, bastante utilizadas en el planeta del testing. Son pruebas que requieren más tiempo de ejecución y asimismo, habitualmente, son bien difíciles de manejar en ambientes de integración continua.

Chimp facilita la labor de efectuar tests sobre la interfaz de usuario, encargándose de la configuración precisa para poder ejecutar estas pruebas. Se encarga, por poner un ejemplo, de instalar Selenium, ChromeDriver, IEDriver, PhantomJS o bien Cucumber.js haciendo de esa forma más fácil sostener el foco en lo verdaderamente importante: el desarrollo, tanto de nuestra aplicación como de los tests que asegurarán la calidad de nuestro software. Además de esto, combina de manera perfecta con diferentes herramientas de integración continua.

Utilizar Chimp es en especial interesante si utilizamos como metodología BDD (Behaviour Driven Development), puesto quec está a la perfección integrado con Cucumber. Esto nos va a permitir avanzar sin distracciones en nuestro desarrollo. Aparte de con Cucumber, asimismo podemos emplear Chimp en combinación con otros frameworks de pruebas en javascript como Mocha o bien Jasmine.

Chimp es usado por Simian, una herramienta de cooperación para la especificación de requisitos de software asimismo desarrollada por los chicos de Xolv.io.

Instalación

Los únicos requisitos anteriores son, tener instalado node y npm, y el JDK v1.8 o bien más actual. Para contrastar que ciertamente cumplimos estos requisitos, abrimos uns ventana de línea de comandos (terminal en linux y mac) y comprobamos las versiones instaladas de node.js y java. Para esto ejecutamos los próximos comandos: 'node -v' para saber la versión de node.js, y 'java -version' para la versión de java.

Primero confirmamos nuestra versión de Node y Java

Si lo precisamos, este es el link para descargar java. Si los inconvenientes son con node, acá teneís una guía para instalar node en windows.

Si cumplimos con los requisitos, sencillamente debemos ejecutar el comando 'npm install -g chimp' o bien 'npm install chimp', en función de que deseemos instalarlo globalmente, o solo para un determinado proyecto. Ya está. Es lo único que debemos hacer. NPM se ocupará de instalar todos y cada uno de los módulos precisos.

Ejemplo práctico

Para hacernos una idea más clara de como marcha Chimp, veremos un fácil ejemplo de empleo. Crearemos un test en el que vamos a abrir una ventana del navegador Google Chrome, vamos a ir a la página web de google (Given I have visited Google), realizaremos la busca turincon.net (When I search for turincon.net) y verificaremos que aparece un backlink a turincon.net (Then I see turincon.net).

Precisamos una ventana de línea de comandos y el editor de código que más nos guste. Para este caso de ejemplo he utilizado Atom.
Vamos a continuar el tutorial que hay en el sitio de Chimp, mas para los más intranquilices os voy a enseñar todo el código fuente y la estructura que tendremos como resultado final:

Resultado final del ejemplo. Carpetitas y código.

La primera cosa que haremos es crearnos una carpetita dónde vamos a poner el todo el código de nuestro ejemplo (dos ficheros). En nuestro caso hemos llamado a la carpetita 'tutorial_chimp'. Más tarde, desde la línea de comandos, en esta carpetita, ejecutamos el próximo comando:

'chimp –watch'

Chimp descargará las herramientas que necesite y en la consola nos va a enseñar un mensaje como este:

'[chimp] Running… [chimp][cucumber] Directory ./features does not exist. Not running'.

Ahora crearemos una carpetita 'features' y vamos a ver que arranca una sesión del navegador Google Chrome. Dentro la carpetita features creamos el fichero el fichero 'search.feature'. Editamos este fichero y ponemos lo siguiente:

Feature: Search the Web
As a human
I want to search the web
So I perro find information
Scenario: Search for turincon.net
Given I have visited Google
When I search for turincon.net
Then I see turincon.net

En la consola nos aparecerá el próximo mensaje:

[chimp] Watching features with tagged with @dev,@watch,@focus
[chimp] Running…
cero scenarios
cero steps

Ahora agregamos la etiqueta @watch a nuestro fichero search.feature inmediatamente antes de delimitar el escenario, y guardamos el fichero, quedando algo así:

Feature: Search the Web
As a human
I want to search the web
So I perro find information
@watch
Scenario: Search for turincon.net
Given I have visited Google
When I search for turincon.net
Then I see turincon.net

En la consola ahora vamos a ver más información, y cucumber nos señala que no se han incorporado las definiciones de los pasos para ese escenario, y nos notifica de de qué manera hacerlo.
Creamos la carpetita support, en features, agregamos el fichero 'step_defs.js' y agregamos el próximo código:

module.exports = function() undefined

Ahora si, Google Chrome va a ir a la página de Google.es, procurará 'turincon.net', y Chimp confirmará que un backlink a 'turincon.net' aparece en la página de resultados.

Conclusión

Esto es solo un pequeño ejemplo de lo que se puede hacer con Chimp. Se trata de una herramienta con mucha proyección de futuro. Con los conocimientos convenientes de Cucumber y la sintaxis Gherkin puede aportar mucho a equipos que deseen comenzar a aplicar BDD.

Aspectos positivos:

Entre las cosas que más me agradan de Chimp resaltaría que es rapidísimo comenzar a utilizar la herramienta. En unos minutos podemos tener ciertos tests listos para montarlos en nuestro ambiente de integración continua, sin importar un mínimo que utilicemos TravisCI, CircleCI, CodeShip o bien, lógicamente, Jenkins.
Otro aspecto positivo es que hacen sencillísimo comenzar a hacer Desarrollos Dirigidos por Comportamiento (BDD), muy demandados por la industria hoy día, y de gran valor si nuestros equipos de desarrollo y negocio trabajan mano a mano.
Otro aspecto resaltable

Aspectos negativos:

Lo peor es que por el momento tiene poca comunidad, debido a su juventud. Esto causa que la información que hay en la página web, alén de la oficial, sea por el momento escasa.
Por otra parte, Chimp hace muchas cosas por nosotros a nivel de configuraación, y eso ahorra tiempo. Mas si se rompe, puede llevar cierto tiempo lograr que funcione nuevamente.

Más información | Chimp

hljs.initHighlightingOnLoad();

code.hljs undefined
@media only screen and (min-width: 768px) undefined
@media only screen and (min-width: 1024px) undefined

Asimismo te invitamos a

De qué forma hallar más tiempo para pasarlo con tu bebé: trucos esenciales y un robot de limpieza para lograrlo

Tendencias de desarrollo en Android y qué prosperar de la plataforma: los comunicantes de la Droidcon Spain dos mil quince nos dan su visión

gRPC, el framework que cambiará el paradigma de microservicios utilizando HTTP/2

– La nueva

Chimp.js. Automated web testing para y por desarrolladores

fue publicada originalmente en

turincon.net

por
Raúl Hernández

.