08. Conociendo el Testing automatizado
Si estás siguiendo nuestro blog, habrás visto las notas sobre tipos de pruebas y el primer acercamiento al Testing Funcional. En esta ocasión, es momento de hablar sobre la automatización de las pruebas.
La transformación digital es uno de los cambios más importantes en nuestra sociedad actual, y por supuesto, el testing no escapa a ello. Un paso fundamental para avanzar en este proceso es utilizar la automatización en las pruebas software.
Qué sabemos de automatización
La automatización de pruebas funcionales consiste en el uso del software para controlar la ejecución de pruebas y comparar el resultado obtenido con el esperado. En definitiva, la automatización del testing es todo uso de herramientas para asistir en las pruebas.
En el contexto actual, las empresas que compiten en el mercado globalizado tienen cada vez más exigencias de calidad. Los productos que desarrollan están en continuo mantenimiento y mejoras. Muchos funcionan sobre múltiples plataformas, sistemas operativos, navegadores y bases de datos.
Las pruebas automatizadas surgen como alternativa para reducir costos y tiempos en las pruebas de regresión. Las pruebas de regresión implican la re-ejecución de alguna o todas las pruebas ejecutadas anteriormente. Su objetivo es verificar que no ocurrió una regresión en la calidad del producto luego de un cambio. La modificación puede ser una nueva funcionalidad, la corrección de un error ya detectado o la actualización de uno o más componentes del software o hardware.
En cualquier caso no es suficiente con probar la modificación solamente, porque esta pudo haber tenido un impacto en otras “zonas” del producto.
Supongamos que una empresa ha desarrollado una app de finanzas y tiene cientos de clientes que la utilizan. Se implementa una nueva funcionalidad que permite obtener un nuevo reporte de la información que gestiona el sistema, el cual habían solicitado varios clientes, ya que les facilita visualizar sus registros. Claramente es necesario probar el nuevo reporte, pero también es necesario re-ejecutar pruebas con el objetivo de verificar que no se modificó el comportamiento esperado de las demás funcionalidades del sistema.
Si se han automatizado un conjunto de pruebas, podrán ejecutarse en cualquier momento y las veces que sean necesarias. Mientras tanto, los testers pueden estar testeando manualmente las zonas más riesgosas o nuevas casuísticas. Si se ejecutan por la noche, mientras los testers duermen, al empezar la jornada podrán analizar los resultados y diseñar y ejecutar nuevas pruebas, o automatizar nuevos escenarios.
Contrario a lo que podemos llegar a pensar, la máquina no puede analizar los requerimientos, diseñar los casos de prueba, pensar los juegos de datos, ejecutar por primera vez una prueba y evaluar su resultado, reportar incidentes, revisar las pruebas, elaborar informes, seleccionar las pruebas a ejecutar y mantenerlas. ¡Sólo el ser humano puede hacerlo!
Y más aún, cuando se detecta una falla, es el ser humano quien tiene que investigar sus posibles causas.
Entonces… ¿cuándo podemos automatizar pruebas?
El programador Mike Cohn, en su libro Succeeding with Agile desarrolla el concepto de la Pirámide de Automatización. Presenta una representación de las pruebas automatizadas agrupadas en tres niveles: Pruebas Unitarias, Pruebas de Servicios y Pruebas de Interfaz de Usuario. La forma de la pirámide surge de la proporción de pruebas que sería deseable mantener dentro de un proyecto.
Pruebas Unitarias: Este tipo de pruebas consisten en aislar un extracto de código y comprobar el correcto funcionamiento.
La ejecución de pruebas desde el inicio de un sistema nos permite verificar la calidad de nuestro trabajo conforme vamos avanzando. Se reducirá el tiempo de depuración y de reporte de incidencias a futuro.Pruebas de servicio: Estas pruebas verifican las funcionalidades sin necesidad de llegar a la interfaz de usuario. Existe un amplio abanico de pruebas de este estilo; desde el CES compartimos el enfoque que le da Alister Scott donde esta capa es desglosada en 3 niveles: Pruebas de componentes, Pruebas de integración y Pruebas de API’s (Application Programming Interface).
Pruebas de Interfaz de Usuario (GUI): Son también conocidas como las pruebas end to end. Son las más costosas de construir y mantener considerando que la interfaz de usuario nos brinda un entorno dinámico y demandante. Por esta razón, se busca minimizar su número, y es importante que los scripts se basen en diseños los cuales siguen un estándar para que sean lo suficientemente flexibles y puedan soportar cambios.
Palabras de experto
Leonardo, uno de nuestros expertos y docente de la Especialización en Automatización de Pruebas Funcionales, nos cuenta su visión:
“La automatización de tareas es cada vez más utilizada por todos, en todo tipo de ambiente. La tecnología avanza con esta característica, vamos desde una simple configuración de tareas en un calendario hasta las pruebas de sistemas.
En un mundo sumamente atravesado por la tecnología, se vuelve cada vez más importante la automatización. La velocidad con la que los sistemas informáticos avanzan nos obliga a tener nuevas estrategias para llevar a cabo un testing paralelo, y contar con la capacidad de automatizarlo se vuelve fundamental.
Por este motivo, invito a profundizar en qué es la automatización, para qué y cuándo sirve, cómo nos ayuda y complementa nuestro trabajo diario como testers. Cada vez son más las empresas que apuestan por integrar a sus equipos automatizadores con el fin de que sus sistemas logren obtener la calidad que se espera dentro de un mercado que avanza tan rápido”.
Para finalizar, te invitamos a ver esta charla, en la que Leonardo explica con mayor profundidad las pruebas automatizadas y su utilidad.
Como siempre, te recordamos nuestras redes para que puedas comentarnos sobre qué otros temas te gustaría que hablemos en futuras notas. ¡Nos leemos!