Selenium: probando aplicaciones web

Bueno, ya tocaba, después de dedicar varios apartados al desarrollo web, toca dedicarle un pequeño, aunque importante apartado a una herramienta de comprobación (tests) como es Selenium.

Esta herramienta es para poder realizar pruebas de sistema, a nivel completo y desde la propia interfaz de usuario… o incluso de forma automatizada, desde scripts de tipo JUnit, Rspec, y otros entornos de pruebas unitarias o de sistema automatizados.

La URL para descargar Selenium es: Selenium Downloads; ahí podremos descargar los entornos, entre ellos el mencionado Plugin para Firefox.

El resto del artículo irá dirigido, sobre todo, a revisar Selenium IDE, que es el que se maneja desde el propio plugin de Firefox, y es la parte más visual y rápida para adentrarse en este entorno de pruebas.

Lanzando el IDE

Una vez se tiene instalado el plugin (no lo comento, puesto que es una instalación básica y guiada, por lo que considero no debe de surgir mayor problema), pasaremos a lanzar el IDE. Este se encuentra en el menú Herramientas (o Tools), bajo la opción Selenium IDE, tal y como se ve a continuación:

Tras esto, se abre una ventana, la del IDE de Selenium, y si os fijáis en la parte derecha de la barra de herramientas, el botón de grabación, ya está presionado, con lo que, si hacéis algún clic, escribís algo en algún formulario de cualquier página que esté abierta en el navegador, se almacenará a modo de comando en el IDE de Selenium dicha opción:

En el momento que volvamos a presionar el botón de grabación, o se seleccione la opción Actions –> Record, se detendrá la grabación y con las opciones de ejecución: Play entire test suite, o Play current test case; se puede reproducir lo grabado, ya sea de forma completa o solamente la línea seleccionada, respectivamente.

Automatizando

Está claro que, podríamos tener Chrome, Firefox, Internet Explorer, Opera, … todos los navegadores posibles para comprobar que el funcionamiento de nuestra aplicación es el que debe de ser… pero resultaría bastante tedioso el tener que lanzar cada navegador (e incluso en cada infraestructura: Windows, Linux, MacOS X, Android, …), por lo que Selenium también nos da otras herramientas.

En principio, desde el entorno, cada test suite puede ser exportada como prueba a: C#, Ruby con Test::Unit o Rspec, JUnit o Python; existiendo también otros exportadores aparte para otros lenguajes, como PHP u otras librerías que permiten escribir el código de tipo Selenium en lenguajes como Erlang.

Webdriver

Nada más entrar en la web, además del entorno IDE del que ya he comentado algo, encontramos que hay dos opciones elementos más disponibles: Remote Control y Webdriver; actualmente, Remote Control ha sido desestimado y en su lugar se emplea Webdriver, por lo que nos centraremos en Webdriver.

A través de la documentación oficial, podemos ver que WebDriver es un framework que se puede emplear en nuestros proyectos de Java, C#, Python, Ruby, PHP o Perl (que son los oficialmente soportados, también está disponible en este enlace Erlang, y hay otros desarrollados por la comunidad.

Grid

Grid es la parte servidora, es decir, un hub o rejilla donde se pueden agrupar servidores de este mismo tipo, de modo que las pruebas se les puedan encargar a ellos. La propia web dedicada a ello de Selenium Grid, How it works, nos muestra como funciona la idea:

Básicamente, consta de que, cada WebDriver pueda ser manejado de forma remota a través de un Grid. De este modo podemos tener varias arquitecturas como Windows, Linux, MacOS X, … y varios navegadores como Firefox, IE, Chrome, Safari, … en nuestra rejilla, y encargar las pruebas para que se realicen en general a todas las plataformas, al mismo tiempo.

Conclusiones

Es un buen entorno para pruebas, y realmente no resulta nada tedioso el desarrollar las pruebas directamente en el IDE, modificarlas y ajustarlas, verificarlas y exportarlas finalmente para la rejilla de pruebas.