Jonathan Rodríguez

Jonathan Rodríguez

Senior Software Developer
Related topics: Web Development

Test automatizados: la clave para la excelencia

5 febrero 2021
2 minutos
Test automatizados: la clave para la excelencia
Hoy en día cuando hablamos de desarrollo de software nos resulta inevitable pensar en los test automatizados. Los test automatizados son una de las etapas más importante de desarrollo de software y que aporta importantes beneficios a nuestro negocio ya que tienen como objetivo garantizar el correcto funcionamiento de nuestro producto, detectando errores en nuestra aplicación antes de que sucedan en producción. Como sabemos, el desarrollo de software se trata de un proceso largo y exhaustivo que requiere la máxima implicación de diferentes perfiles (desarrolladores, diseñadores, maquetadores, Sistemas…). Se experimentan diferentes procesos para llevar a cabo todo lo que involucra la creación de dicho software, desde la toma de requisitos por parte del cliente hasta cada parte de la aplicación, desde el diseño de la interfaz hasta toda la programación, bases de datos… todos ellos se unen y se entregan en los servidores de producción. En este artículo nos basaremos en hablar sobre la importancia de los test automatizados. Existen diferentes tipos de test automáticos. Por ejemplo, los test de integración son ejecutados después de los test unitarios y tienen como objetivo garantizar que cada componente o parte de nuestra aplicación funciona correctamente de forma conjunta al ser integrado con el resto, mientras que los test unitarios sólo comprueban cada módulo de manera individual. Es nuestra labor identificar cuál puede ser más adecuado dependiendo de nuestro proyecto.  

¿Por qué es importante que los test sean parte del ciclo de desarrollo?

Imaginemos que estamos construyendo una aplicación desde cero. Si trabajamos de forma ágil, nuestro primer objetivo será construir un MVP ó Mínimo Producto Viable y a partir de ahí seguiremos evolucionando el producto. Durante todo este ciclo de desarrollo se van diseñando y programando diferentes módulos individuales que serán reutilizados en diferentes parte de la misma aplicación. Estas partes pueden ser desde elementos visuales como botones, banners, elementos de un formulario, o bien partes de código que se ejecuta en el lado del servidor reutilizables para optimizar el tiempo de desarrollo. Los test automatizados van creando nuevos elementos, añadiendo nuevas funcionalidades, arreglando fallos encontrados, es decir, hacen evolucionar el producto. Por cada uno de estos cambios, ya sea una nueva mejora o una corrección de un error conocido, significa que existe un nuevo caso de uso dentro de nuestra aplicación, algo que el usuario puede hacer que antes no podía, esto significa que debemos comprobar que una vez puesto en producción los nuevos cambios, la aplicación funciona, nuestros cambios funcionan, hacen y se visualizan de la forma que esperábamos. Pero esto no queda ahí, porque no sabemos si con esos nuevos cambios, hay otra parte de nuestro producto que ha dejado de funcionar o ahora tiene un comportamiento inesperado, si recordamos, antes comentamos que durante el desarrollo de software, se van creando pequeños módulos con la intención de ser reutilizado en varios puntos de nuestra aplicación, por lo que sí hemos tocado uno de esos módulos que se están utilizando en varias partes del programa, no solo debemos probar que la nueva funcionalidad que acabamos de subir funciona, sino que debemos ir a cada una de las páginas o secciones de nuestro producto que use el mismo módulo que hemos modificado para volver a comprobar que siguen funcionando. Si este proceso fuese manual, costaría mucho hacerlo y no habría una garantía de que se han realizado todas las pruebas correspondientes, ya que es fácil que se nos olvide volver a probar un caso muy en concreto, no saber qué módulos afectan a qué parte del software, o simplemente no tener la capacidad de probar nuestro software en cada dispositivo móvil, desktop, tablet… Es aquí donde la automatización de test se convierte en protagonista y, como parte del flujo de desarrollo, añadimos una etapa donde para cada evolución del producto definiremos una serie de pruebas que se ejecutarán de forma automática y que comprobarán que dicha evolución funciona. De esta forma, siempre que hacemos una modificación en el código, independientemente si es para arreglar un fallo o añadir mejoras, se ejecutarán todas las pruebas que irán probando cada una de las partes y casos de uso de nuestra aplicación asegurándose que todo funciona correctamente antes de ser puesto en producción. El trabajar con test nos permite tener los procesos, herramientas y métodos de trabajo necesarios para garantizar la calidad de cada entrega o desarrollo. En resumen los test automatizados nos aportan importantes beneficios:

  • Ahorran tiempo y dinero: Los test automatizados multiplican la capacidad de probar la aplicación, minimizan significativamente las pruebas manuales permitiendo que las personas se enfoquen en realizar otro tipo de tareas. También permite realizar más cantidad de pruebas, sin la necesidad de contratar más personas.
  • Más precisión: Proporcionan herramientas de reporting y diferentes tipos de entornos para probar nuestro software, diferentes dispositivos, sistemas operativos, etc. Por lo que nos permite tener mayor precisión a la hora de encontrar fallos.
  • Estabilidad: Al añadir los test automáticos dentro del flujo de desarrollo se permite que el producto pueda evolucionar de una forma más rápida y estable ya que la mayoría de errores los encontrarán antes de subirlo a producción.

Espero que con este artículo haya quedado claro la importancia de los test automatizados y los beneficios que aporta a nuestro negocio. Así que es hora de dejar de ver esta fase como una “pérdida de tiempo” y empezar a verla como lo que realmente es, una inversión a futuro.