Introducción a Selenium

Selenium se ha convertido en la herramienta más conocida para pruebas web funcionales, por lo que es importante evaluarla y saber cómo te puede ayudar a mejorar la calidad de tus aplicaciones

La automatización de pruebas se ha incrementado notablemente durante los últimos años, ya que son bien conocidas las ventajas que adoptan estas prácticas.

Y si a esto le añadimos el incremento del número de aplicaciones que se ejecutan a entornos web (debido también a las ventajas que aporta), obtenemos la importancia de la ejecución de la automatización de pruebas de aplicaciones web.

Aunque es posible que no hayas tenido la oportunidad de utilizarlo, seguramente si has buscado algo sobre este tipo de pruebas, habrás comprobado que existe una herramienta más conocida para ello es… Selenium.

Breve historia de Selenium

Selenium nace en 2004 de la mano de Jason Huggins, quien formaba parte de la compañía ToughtWorks.

Por aquel entonces, Huggins estaba trabajando en una aplicación web que precisaba de pruebas a menudo, por lo que, viendo las desventajas del testing manual, creó un programa en Javascript que era capaz de controlar las acciones del navegador.

Se dio cuenta de que la herramienta podría ser de gran ayuda para automatizar las pruebas de otras aplicaciones web, así que liberó el código fuente y fue renombrado a Selenium Core.

¿Qué es Selenium?

Selenium es un framework específico para aplicaciones web que facilita la automatización de pruebas funcionales.

En esencia, Selenium controla remotamente las instancias de los navegadores para emular las (posibles) interacciones de los usuarios, con el objetivo de validar las funciones de la aplicación.

Por lo tanto, permite simular las tares más habituales, como podrían ser: completar campos de texto, seleccionar opciones de los desplegables, hacer click en determinados enlaces… aunque también facilita otros controles como movimientos de ratón, ejecución de Javascript arbitraria, obtención de datos del sitio web (Títulos, cabeceras, etc…) y muchas más.

De esta forma, Selenium es una herramienta que permite la adopción del testing continuo.

Como dato curioso, ¿sabes de dónde viene su nombre? Pues decidieron llamarlo Selenium porque, en ese momento, existía una compañía en la competencia llamada Mercury Interactive, y el remedio para el envenamiento por mercurio, es el selenio.

Pues ver su sitio web en https://www.selenium.dev/

Ventajas de utilizar Selenium

Código libre

Una de las principales ventajas para la adopción e implantación de Selenium es que, al ser código libre, permite realizar pruebas con el fin de evaluar su conveniencia sin incurrir en gasto de licencias.

Ampliar variedad de navegadores

Con el objetivo de poder utilizarse para testear la gran mayoría de aplicaciones, y dada la gama de posibilidades de las que disponemos hoy en día para seleccionar nuestro navegador favorito, Selenium cuenta con compatibilidad para los más utilizados:

  • Google Chrome/Chromium
  • Mozilla Firefox
  • Safari
  • Opera
  • Microsoft Internet Explorer

Aunque no aparece disponible oficialmente en su documentación, Microsoft ha desarrollado el driver necesario para realizar pruebas también con el navegador Edge.

Amplia variedad de sistemas operativos

Además, para complementar la ventaja anterior, los componentes de Selenium, que verás a continuación, pueden ejecutarse también en los sistemas operativos más utilizados:

  • Windows
  • MacOS X
  • Linux

Soporte de lenguajes

Selenium facilita además un lenguaje específico de dominio, gracias al cual los desarrolladores pueden programar las pruebas que deberán realizar en su aplicación e introducirlas en su código, facilitando la adopción de DevOps.

Además, gracias a esto, no es necesario aprender un nuevo lenguaje para desarrollar las pruebas, ya que se pueden programar en los siguientes lenguajes:

  • Java
  • Python
  • C#
  • Ruby
  • Javascript
  • Kotlin

Pruebas paralelas

Gracias a uno de sus componentes, Selenium permite la realización de pruebas en paralelo, lo que permite reducir el tiempo de ejecución del testing, y en consecuencia, adelantar la obtención de los resultados y el feedback.

Reducido uso de hardware

En comparación a herramientas alternativas como QTP, UFT o SilkTest, el uso que hace Selenium del hardware es más reducido, por lo que no requiere de plataformas especialmente potentes.

Documentación y aprendizaje

Selenium ha mejorado notablemente su documentación a través de su sitio web, con una interfaz mucho más amigable, y con ejemplos que facilitan enormemente su aprendizaje.

Además, cada vez existe más formación relacionada con esta herramienta.

Componentes de Selenium

Selenium dispone de varias herramientas con funcionamiento y objetivos distintos que permiten realizar las pruebas mencionadas anteriormente de distinta forma, dependiendo principalmente del entorno y el proyecto para el que se realicen.

Selenium IDE

Es un completo entorno de desarrollado integrado para las pruebas de Selenium.

Se puede implementar gracias a sus respectivos plugins para Firefox y para Chrome.

Desarrollado por Shinya Kasatani, empezó a formar parte de Selenium en 2008, aunque no fue mantenido activamente hasta 2018.

Su funcionamiento es muy sencillo: mediante un plugin, se pueden grabar las acciones que realicemos con el navegador para, posteriormente repetirlas de forma desatendida, y obviamente más rápida.

Selenium IDE

Está orientada a desarrolladores y testers que deban ejecutar algunas pruebas sencillas que no requieran de un frecuente mantenimiento.

Selenium Web Driver

Quizá el componente más importante de Selenium.

Selenium Web Driver es el sucesor de Selenium Remote Control (Selenium RC).

Este Webdriver se encarga de recibir los comandos que enviará posteriormente al navegador definido para la ejecución de las acciones que realizarán las oportunas pruebas.

Basic communication

Esto se realiza a través de un driver específico para cada navegador, que será el encargado de seguir el proceso anteriormente descrito.

Fue desarrollado por Simos Stewart en 2006

Selenium Grid

Es un servidor que permite realizar las pruebas en varias instancias de navegadores, que podrán ejecutarse en máquinas remotas.

El uso de Selenium Grid, implica que es necesario que un servidor actúe como Hub (concentrador)

Remote communication with Grid

La capacidad para la ejecución de las pruebas en distintas máquinas, y distintos navegadores de forma simultánea, permite programar un balanceo adecuado del rendimiento mientras se pueden obtener los resultados de forma más rápida.

Conclusiones sobre el uso de Selenium

A pesar de que es recomendable la priorización de la ejecución de pruebas unitarias e inspección de código sobre las pruebas de interfaz, el uso de Selenium permite mejorar la calidad de las aplicaciones, gracias a la facilitación de ejecución de pruebas funcionales.

Aunque las pruebas funcionales se sitúen en una fase posterior, no se deben infravalorar, pues son los defectos que podrán ver explícitamente los usuarios, por lo que, aunque no pongan tanto en riesgo por ejemplo la seguridad, sino que pone en riesgo la imagen de la organización, lo que a nivel de costes puede suponer un impacto igual o superior.

Si a esto le añadimos, que entre sus ventajas cuentan con que es código libre y su facilidad de aprendizaje, es muy recomendable probarlo y comprobar si incrementa el número de detección de errores previos a producción, para evaluar si supone una ventaja su implantación en la compañía.

Fuentes:

Deja un comentario