Testing Funcional y de Regresión con Selenium

En un artículo anterior hablé de testeo de carga y performance, pero existe también otro tipo de prueba que es necesaria para generar un sistema acorde a las necesidades del cliente.

El testing funcional se enfoca en garantizar que todos los requerimientos funcionales de la aplicación estén implementados en la manera correcta: desde la performance de la UI (ej: que todo control web funcione bien en cualquier navegador) a la comunicación correcta entre los módulos de la aplicación o componentes externos (pasarelas de pago, publicidad, etc).

Una prueba de regresión, en cambio, garantiza que los cambios en el sistema (mantenimiento o nuevas funcionaidades) no afecten las funcionalidades ya implementadas. En otras palabras: Todo lo que funcionaba bien antes, funciona bien ahora.

Este tipo de pruebas se pueden hacer de manera manual o automática. La forma manual puede ser usada en sistemas pequeños con pocos o ningún cambio, donde la inversión de tiempo y recursos para aplicar pruebas automatizadas no se justifica. También puede usarse para añadir el ojo crítico de un tester humano para pulir una interfaz de usuario. Pero cuando los sistemas se agrandan, o deben ser desarrollados en etapas, las pruebas automatizadas se vuelven indispensables.

Cuando grandes sistemas con muchos flujos de interacción que abarcan un rango de caminos de ejecución son probados de forma manual, estamos confiando plenamente en la habilidad del tester para descubrir todos los posibles flujos y proveer una gran cantidad de datos de prueba.

Es por eso que las pruebas automáticas proveen rapidez, confiabilidad y reusabilidad de las pruebas (porque el tester no necesita volver a generar todas las corridas de pruebas cuando un cambio aparece) y permite correr las pruebas en cualquier momento, las veces que sea necesario.

Y aquí llega Selenium a salvar el día! Con esta herramienta podemos construir un conjunto de pruebas capaces de ser ejecutadas en una variedad de de navegadores (incluso en distintas versiones de ellos) y al mismo tiempo ahorrando tiempo y recursos de hardware.

Entonces, que es Selenium? Para ser preciso, es un montón de herramientas, hablemos un poco de ellas.

Primero, tenemos Selenium IDE, un complemento de Mozilla Firefox que nos permite grabar, editar, debuggear y reproducir pruebas de una forma muy sencilla: usando clicks del mouse. Selenium IDE es una herramienta poderosa para generar pruebas rápidas sin experiencia previa. Pero tiene una desventaja: Los datos y flujos de prueba serán exactamente los establecidos al momento de grabar la prueba, así que no es muy útil si necesitamos testear nuestra aplicación con diferentes datos de entrada o muchos flujos distintos (tenemos que generarlos uno por uno).

Por eso es que Selenium Web Driver se inventó. Con esta herramienta, podemos “programar” (en C# o Java) un grupo de funcionalidades reutilizables de forma muy sencilla. Combinados, generan todos los flujos que necesitemos. Incluso podemos obtener data de los flujos desde archivos o bases de datos, logrando así un conjunto virtualmente ilimitado de casos de uso, bastante cercano al uso diario del sistema.

Pero hay que ser consciente de que programar este “sistema de pruebas” lleva mucho tiempo, y, dependiendo de que funcionalidades de Selenium usemos, requiere un conocimiento de C# o Java bastante alto. Es esencial balancear la inversión de recursos contra la creación de una aplicación robusta que pueda ser adaptada y modificada de una manera confiable.

Y como la frutilla del postre tenemos a Selenium Grid, un sistema basado en servidor, que gestiona un grupo de nodos asociados a dicho servidor, que permite correr pruebas paralelas en distintas estaciones de trabajo, sistemas operativos y diferentes versiones de navegadores.

Es por eso que tenemos que usar todas las herramientas que tengamos a mano para reducir riesgos, mejorar costos y mantener a nuestros clientes satisfechos.

Summary
Functional and Regression testing with Selenium
Article Name
Functional and Regression testing with Selenium
Description
Functional and Regression Testing are both incredibly useful techniques when it comes to software development. Selenium makes performing these tests easier.
Author
Publisher Name
Diveria
Publisher Logo