This information in English:
Uno de los principios de las Metodologías Ágiles de desarrollo software es el TDD -Test Driven Development o desarrollo guiado mediante pruebas-, que permite a los desarrolladores tener un mayor control sobre el comportamiento de su código.La fase de pruebas de tu código ya no representa una pequeña parte de tu proyecto, sino que debe pasar a ser una manera rápida y eficiente de comprobar el código a través de los tests automatizados; al mismo tiempo que facilite el mantenimiento del código en futuras actualizaciones del proyecto. Por eso es necesario incluir el tiempo de pruebas en la planificación del alcance de tus proyectos.
Selenium es un projecto que sirve de gran ayuda a la hora de efectuar pruebas automatizadas de tus páginas o aplicaciones Web; consiste en un conjunto de herramientas software, proporcionando cada una una solución diferente para automatizar tus pruebas.
Selenium te puede ayudar a probar tus aplicaciones Web, del mismo modo que yo lo encontré muy útil para efectuar pruebas automatizadas de mis aplicaciones DOJO.
La versión más reciente de Selenium es Selenium WebDriver, que es el fruto de la unión de dos projectos, Selenium RC y WebDriver, con el fin de que ambas soluciones interactuaran mejor entre sí; todas las referencias a Selenium en este artículo se refieren a la versión Selenium WebDriver o Selenium 2.
Selenium IDE Interface |
Primeros Pasos con Selenium
Lo primero que debes hacer para familiarizarte con Selenium es probar la herramienta Selenium IDE, que viene implementado como una extensión de Firefox y permite crear scripts para Selenium. Con Selenium IDE puedes grabar tus interacciones con el explorador, para luego editar y depurar estas pruebas.
La interfaz de Selenium IDE es intuitiva y muy fácil de utilizar nada más instalas el plugin en tu explorador Firefox. Conforme navegas en tu página o aplicación Web, Selenium IDE graba todos los pasos que ejecutas, de modo que puedes guardar tus casos de pruebas (test cases) y agruparlas (suite of tests) para luego reproducir los mismos procesos tantas veces como desees.
Las pruebas creadas con Selenium IDE se pueden reutilizar durante las pruebas de integración de la aplicación Web en el momento de compilar y empaquetar la aplicación los archivos. Hay múltiples opciones, pero en este artículo nos centraremos en usar Selenium WebDriver para ejecutar los test procedentes del IDE de dos formas diferentes:
- Scripts HTML creados directamente en Selenium IDE como suites de pruebas
- Pruebas JUnit exportadas por Selenium IDE como clases Java
Selenium WebDriver
Otro módulo de la familia Selenium, a parte del IDE, es Selenium WebDriver, que se puede utilizar para incluir la ejecución automática de pruebas para páginas y aplicaciones Web como parte del proceso de compilado de la propia aplicación.
El ejemplo en el que se basa este artículo es una aplicación DOJO construida con Maven; por lo que se hará uso de las dependencias Maven disponibles para Selenium y los diferentes exploradores que se quieren cubrir como parte de nuestras pruebas.
> Añadir las dependencias para Selenium WebDriver
El siguiente fragmento de código muestra las dependencias Maven necesarias en el fichero pom.xml. Se van a probar los tres exploradores indicados, esto es Firefox, Internet Explorer y Google Chrome.
La versión más actual de Selenium en el momento de escribir este artículo es la 2.26.0.
> Usar las suites de pruebas en HTML de Selenium IDE
El código HTML para ejecutar las suites de prueba se puede obtener de Selenium IDE haciendo: File > Save Test Suite. Una suite de prueba es un conjunto de uno o más casos de pruebas; cuando guardes la suite tendrás que indicar nombres para los diferentes casos de pruebas y para la suite; asegúrate de que el nombre del fichero que representa la suite tiene una extensión de HTML, ya que si no la tiene fallará la ejecución de estas pruebas.
Los fragmentos que se muestran a continuación muestran un ejemplo muy simple de una suite de pruebas con un solo caso de prueba que abre una página de registro de usuario y rellena el formulario.
> Fragmento del fichero que representa la suite:
> Fragmento del caso de prueba:
Los archivos que se generen con Selenium IDE para tus pruebas deberían ser similares a los que se muestran sobre estas líneas.
Una vez creados los ficheros de tu suite de pruebas, pueden ser ejecutados como parte del proceso de compilación, para lo que hace falta incluir más dependencias en el archivo pom.xml para incluir el servidor Jetty y el plugin de Maven para efectuar la llamada a la suite de pruebas. Los siguientes fragmentos de código deben estar presentes en tu fichero pom dentro de la seción build.
> Hay que incluir la dependencia Jetty para que el servidor Jetty arranque la aplicación antes de la fase de pruebas de integración y la pare cuando terminen las pruebas:
> Hay que incluir la dependencia Maven para Selenium, con diferentes ejecuciones del "goal" selenese, una para cada uno de los exploradores que se deseen probar:
No olvides situar los archivos de tu suite en el directorio correcto y que el fichero de la suite debe tener extensión HTML, si no, el explorador no se cerrará al finalizar las pruebas y el proceso de compilación nunca finalizará, ya que las pruebas no se consideran terminadas.
En este punto ya puedes compilar tu aplicación y ejecutar tu suite de pruebas como parte de las pruebas de integración; simplemente ejecuta el comando Maven: mvn clean install
La compilación de tu aplicación comenzará y verás cómo se ejecutan las pruebas, abriendo los diferentes exploradores para reproducir los casos de pruebas de tu suite de pruebas.
NOTA: Durante las pruebas ejecutadas antes de escribir este artículo, la versión 2.3 del plugin de Selenium para Maven es compatible con Firefox 12, pero no con las versiones posteriores, de manera que si quieres probar el "goal" selenese en Firefox, debes tener instalada la versión 12. Internet Explorer y Google Chrome funcionaban correctamente con sus respectivas últimas versiones.
> Usar las pruebas JUnit exportadas de Selenium IDE como clases Java
El código Java para los casos de prueba se puede obtener haciendo: File > Export Test Case As... > Java / JUnit 4 / WebDriver en Selenium IDE. Se generará una clase Java con anotaciones JUnit para cada uno de los casos de pruebas que exportes desde Selenium IDE. Este código es más una guía de lo que tus pruebas deberían ser, ya que muchas de las instrucciones exportadas no funcionarán como pruebas JUnit; aún así, el código generado es una plantilla muy útil y fácil de mejorar con tu propio código.
La dependencia necesaria para configurar estas pruebas es el plugin de Maven Surefire (a parte de JUnit), como se muestra a continuación:
De acuerdo con la configuración anterior, las clases de prueba para Selenium WebDriver deber estar ubicadas bajo el paquete *.selenium y deben llamarse *Test.java para poder ser ejecutadas como parte de las pruebas de integración JUnit.
Los siguientes fragmentos de código muestran la misma página de pruebas que antes, usando clases de pruebas JUnit para comprobar los tres exploradores: Firefox, Internet Explorer y Google Chrome:
> En este caso, las clases de pruebas para Firefox con compatibles con la última versión del explorador
> Para Internet Explorer, es necesario descargar un driver de Internet Explorer; eligiendo el adecuado a tu versión de Windows (32 o 64 bits), y además hay que expecificar en la clase de prueba que use ese driver
> Para Google Chrome, es necesario descargar el chromedriver adecuado para el sistema operativo en que trabajes, y además indicar en la clase de pruebas que use dicho driver
Ya puedes compilar tu aplicación y ejecutar las pruebas JUnit como parte de tus pruebas de integración; simplemente ejecuta el siguiente comando Maven: mvn clean install. Los resultados de las pruebas se pueden almacenar usando el plugin Maven Surefire Report.
Y hasta aquí mis reflexiones acerca de este tema. Muchas gracias por leer este artículo, espero que te haya sido de ayuda para Automatizar tus pruebas Web. Por favor, deja cualquier pregunta o comentario que tengas.
No comments:
Post a Comment