Testing funcional ¿Por donde empezar?
En este post vamos a tratar el Testing Funcional. Para el que no lo conozca el testing funcional a grandes rasgos verifica que una aplicación software cumple todos los requisitos especificados. Estas pruebas son normalmente de caja negra, es decir no es necesario conocer el código fuente de la aplicación aunque no siempre es así.
¿Qué es Selenium?
Selenium es un framework Open Source que permite realizar pruebas sobre aplicaciones Web. Se trata de una herramienta especialmente útil para todos los desarrollos basados en Web porque permite automatizar procesos de testing y repetirlos, lo que nos lleva a un ahorro de tiempo y esfuerzo muy importante en un proceso de desarrollo y mantenimiento de cualquier aplicación.
Está compuesto por una herramienta para grabar/reproducir pruebas sin usar un lenguaje de programación (Selenium IDE) y también incluye Selenium WebDriver, para escribir pruebas en lenguajes como Java, C# o Python.
Con Selenium puedes simular lo que haría una persona navegando por tu aplicación web.
Un poco de historia
Selenium es un proyecto Open Source que tiene ya un largo recorrido. Nació en 2004 como una herramienta que permitía incrustar código JavaScript en el navegador para “ir haciendo clic” en los distintos elementos de la página (Selenium IDE), este proyecto siguió creciendo hasta convertirse en Selenium RC. Por otro lado Google liberó una aplicación llamada WebDriver que intentaba suplir algunos problemas de Selenium RC.
Así llegamos a 2012 en donde se fusionan ambos proyectos y nace “Selenium 2 WebDriver”, para ejecutar pruebas de aplicaciones web en distintos navegadores. Para ello podemos escribir las pruebas en Java, C# o Python y ejecutarlas en distintos navegadores, Firefox (por defecto), Chrome, Edge…
Dispone de una interfaz sencilla con dos clases principales: WebDriver (para el control de los distintos navegadores) y WebElement (para los elementos que componen la página web).
Selenium también permite test en dispositivos móviles iPhone, Android y Windows Phone incluyendo un emulador para poder testear las aplicaciones.
Características de Selenium
Apoyo activo y estable de la comunidad de código abierto y de varias empresas.
Soporte para muchos lenguajes de programación, Java, Python, PHP, C#, Ruby…
Permite el control automatizado de los navegadores reales en sistemas operativos reales, garantizando que las pruebas son lo mas cercano posible a la realidad.
Utiliza un estándar aprobado por WC3, lo que facilita que terceros se involucren.
Multiplataforma. Selenium se basa en Java y se puede ejecutar en Windows, Mac, Linux…
Fácil de configurar.
Necesitas conocer los atributos, (name, id, XPATH…) de los componentes de nuestra Web.
La ejecución de varias pruebas puede ser un proceso largo.
Comparativa con otras APIs
Las pruebas funcionales están muy ligadas a los test de aceptación, a las pruebas de interfaz de usuario y por tanto existen multitud de herramientas para este fin, y entre las más populares están Watir, Sahi, Canoo.. y como no Selenium WebDriver. En la siguiente tabla vamos a realizar una comparativa de las principales aplicaciones:
Conclusiones
Una de las dificultades que tiene Selenium es trabajar con Ajax, por ejemplo, trabajar con Pop-Ups que se abren, aunque existen muchos trucos para que esto no sea un impedimento, desde esperar unos segundos a que aparezca el Pop-Up hasta ir verificando que aparece en el navegador.
Tanto Selenium como Watir son una excelente opción a la hora de empezar con la automatización de pruebas, ya que hay gran cantidad de recursos para solucionar los problemas. Si conoces lenguajes de programación como Java, C#, Python… Selenium seria una excelente opción. Si eres un apasionado del Ruby, tal vez su mejor opción sería Watir o Saha.
También deberíamos de tener en cuenta el concepto de servidor de integración continua. Jekins permite que cada vez que un desarrollador del equipo de trabajo realice un cambio sobre el código fuente, el sistema mediante la ejecución de sus tareas automáticas podrá revisar dichas actualizaciones y determinar su correcto funcionamiento o posibles fallos en el código realizando los convenientes test (Selenium) facilitando el seguimiento de procesos, encontrar defectos y la toma de decisiones en la mejora del software.
¿Estas de acuerdo con la comparativa? ¿Cuál es tu experiencia o trucos a compartir en el testing funcional?
Os dejo un ejemplo de testing funcional con Selenium: https://github.com/JuanJoseGarcia/TestWebSelenium.git
Juan José García Herrero
Microsoft MCSD Web Applications + SharePoint Apps
Tajamar – 2015/2016