El proceso de Testing & QA es clave para la elaboración de un software de calidad, no solo por que garantiza el lanzar al mercado un aplicativo eficiente que cumpla con las expectativas del usuario, sino porque permite la mejora continua en los procesos productivos, aumentando las tasas de adopción aún más.

Entre la fase de pruebas, encontramos una gran variedad de disciplinas que, según las necesidades de su negocio y/o del desarrollo, ofrecen una serie de ventajas y desventajas a tomar en cuenta. En el caso particular de las Pruebas Automatizadas, encontramos que estas están ganando terreno entre las empresas de desarrollo de software, sin embargo, existen varios temas a considerar antes de aventurarse en realizar este productivo pero calificado proceso.

¿Qué es el testing automatizado?
La automatización de pruebas software hace referencia al diseño, desarrollo y ejecución scripts a fin de que puedan realizarse esas pruebas sin intervención humana. La principal razón por la cual las empresas están decantándose por el testing automatizado tiene que ver con la optimización de los tiempos de desarrollo y la detección de errores en puntos de este proceso de manera que estos errores sean más sencillos de solucionar, permitiéndonos desarrollar con mayor seguridad.

El ejemplo más común es la automatización de pruebas de GUI (Interfaz Gráfica de Usuario) donde a través de una herramienta o framework se reproducen los pasos de un caso de prueba y se verifica si el resultado de esos pasos es el esperado. Pero la automatización de pruebas no se limita a este tipo de pruebas o al menos, no debería hacerlo.

Principales beneficios
Las empresas software, por la naturaleza de su negocio necesitan ser ágiles, esto significa poder sacar al mercado productos o mejoras de sus productos de forma rápida, sin que la calidad se vea sacrificada. Para alcanzar este objetivo, el uso de metodologías ágiles y automatización de ciertos procesos suelen ser estrategias clave.

El uso de metodologías ágiles se basa en la comprobación continua del código para poder integrar poco a poco al código ya existente, las nuevas funcionalidades o mejoras, actualizando y verificando a diario para obtener un resultado mucho más fiable y en el menor tiempo posible. Esto implica que en cada ciclo de desarrollo se ejecuten los mismos casos de prueba con la finalidad de asegurar que las modificaciones que se hicieron en el código no generen defectos.

La automatización se encarga de agilizar cualquier proceso reduciendo el tiempo en el que se prueba el producto. Automatizar las pruebas más básicas y repetitivas que no requieran intervención humana, sirve para que los testers puedan dedicar más tiempo a probar las áreas críticas de la aplicación y/o hacer pruebas más complejas (casos borde, usabilidad, etc) donde se requiere combinar acciones o verificar desde un punto de vista lógico.

Principales ventajas

  • Fiabilidad: Se elimina el error humano. El script tendrá pasos precisos que serán ejecutados siempre de la misma manera. Ejecutar la misma tarea repetitivamente puede volverse tedioso y después de cierto tiempo el tester puede no prestar la misma atención a los detalles de dicha prueba y omitir algún tipo de error. Al ejecutarse repetidamente como parte del desarrollo permite a los desarrolladores comprobar que sus modificaciones no introdujeron errores en partes críticas de la aplicación.
  • Rapidez: Por ser una prueba de naturaleza automática, será ejecutada mucho más rápido que si la ejecutara un tester. Claro que esto dependerá mucho de la infraestructura con la que se cuente y el nivel de integración de las pruebas. No es lo mismo que las pruebas automáticas se lancen de forma automática cada vez que se deploya la aplicación y corran en un ambiente dedicado, a que, como ocurre en muchos casos, deba iniciarlas manualmente un tester, en su computadora, para que corran en un ambiente compartido (como QA o UAT) donde alguien puede cambiar un dato y la prueba podría fallar. Ni hablar que en este caso también se está utilizando el tiempo del tester que por lo general, si son pruebas de UI, no va a poder utilizar su computadora hasta que las pruebas terminen y eso puede llevar tiempo.
  • Mayor cobertura de pruebas: permite dedicar recursos a probar la aplicación en profundidad.

Algunas desventajas

  • La creación de scripts automatizados es un proceso costoso que requiere un gran nivel de habilidades técnicas.
  • No se pueden automatizar una aplicación al 100%: Por lo general, las aplicaciones siempre van a tener alguna funcionalidad que requiera la interacción del usuario, por ejemplo, hacer click en un link que se envío en un mail de confirmación (este caso podría llegar a automatizarse en algunos casos), o comparar que una imagen sea exactamente igual a la esperada (cada browser la mostrará levemente diferente) o un login que solicita seleccionar imágenes para comprobar que no se trata de un robot, se requieren de intervención del tester y no puede ser automatizado. También dependerá del CI/CD (prácticas de continuous integration y continuous delivery) con la que se cuente.
  • Siempre hay que tener en cuenta cual es el coste y cuál es el beneficio: para evaluar si las pruebas se van a realizar de forma manual o automatizada, teniendo en cuenta el conocimiento de la herramienta a utilizar, lenguajes de programación, tiempos y demás.

Conclusión:
La Automatización de Pruebas debe darse a través de un proceso bien planificado para que sea efectiva desde el punto de vista de costo y debe ser usada para que brinde beneficios reales, siendo realistas sobre los recursos y perfiles que se necesitan involucrar para su implementación. Automatizar no es barato, no es rápido y no es sencillo. Mal implementada, esta estrategia puede convertirse en una pérdida de tiempo, esfuerzo y dinero.