Cuando hablamos de automatización de pruebas de software, podemos preguntarnos: ¿de qué estamos hablando realmente?

La Real Academia Española nos define automatizar de la siguiente manera:

Aplicar la automática a un proceso o a un dispositivo.

Constantemente hablamos de los procesos de pruebas automatizados bajo el marco del ahorro de costes y tiempo, formándose en nuestra mente sentencias como “probar más en menos tiempo” y “ahorrar tiempo y dinero”. Pero ¿Qué es realmente la automatización de pruebas de software? ¿Qué vamos a conseguir realmente automatizando el proceso de pruebas?

Tomando la definición de ISQTB Glossary sobre “automatización de pruebas” tenemos:

The use of software to perform or support test activities.

Que podríamos traducir como El uso de software para ejecutar o ayudar las actividades de pruebas. Vamos a dividir esta oración en dos partes, por un lugar (a) The use of software y por otro lado (b) to perform or support test activities, y analicemos qué podemos inferir de ellas.

¿Cómo abordar la automatización de pruebas de software?

 

En primer lugar, implica el uso de software para probar el software. Dicho así, puede ser algo parecido a un oxímoron, pero queda más claro si se enuncia como: uso de HERRAMIENTAS para probar el software. Estas herramientas se pueden encontrar en diferentes formas, como un script, o tener entornos de automatización como Selenium. Podemos pensar que no es necesario hacer uso de estas herramientas, pero, sin ellas sería imposible, ya que estaríamos en el escenario de una ejecución manual, aunque fuera tan sencillo como hacer click en un ratón: es indispensable el uso de una herramienta (software) para realizar pruebas de manera automática.

Además, hay que tener en cuenta que esta automatización de pruebas de software no tiene por qué (o no podrá siquiera en algunos casos) restringirse a herramientas de ejecución de pruebas, como el mencionado Selenium o Postman, sino que además necesitaremos otras herramientas para la generación automática de datos de prueba, informes, análisis de resultados, etcétera. De ahí la segunda fase de la definición, que implica la ejecución de las herramientas mencionadas para realizar las pruebas.

Debemos disponer de un conjunto de recursos que nos permitan analizar, diseñar y ejecutar el proceso de pruebas automáticas en su conjunto. Estos recursos no han de limitarse a los recursos técnicos o software, que son los que cubren la definición mostrada, sino que además necesitamos otros adicionales, metodológicos y procedimentales, para que este proceso sea realmente efectivo.

El proceso de automatizar pruebas

 

Con todo esto, podemos encontrar ciertas complicaciones como disponer de un conjunto de pruebas desordenadas, scripts no mantenidos, datos mal generados, etcétera. Para esto, hemos de realizar una serie de actividades que nos permitan reducir los riesgos:

  • Revisar el código de las pruebas.
  • Refactorizar el código.
  • Mantener simples las pruebas.

Las pruebas que automaticemos han de estar bien estructuradas, ser legibles y verificar únicamente un ítem. Esto hará que las pruebas sean más fáciles de mantener, requiriendo menos tiempo para ese trabajo. Tenemos que mantener nuestro código simple, pero esto no quiere decir que sea fácil.

Pensemos en abordar el proceso de pruebas de la siguiente manera: realizamos una rápida búsqueda en Google, escogiendo la primera herramienta publicitada, de la que seleccionamos/configuramos unas opciones, y a continuación buscamos en StackOverflow nuestras dudas al respecto, seleccionando un batiburrillo entre las tres primeras respuestas verificadas. Si esto te resulta familiar, estás haciendo las cosas mal.

Esto hará que nuestras pruebas sean no mantenibles, ya que carecemos del conocimiento adecuado sobre ellas. Además, estas pruebas serán difícilmente aprovechables para usarse como parte de otras pruebas, y, por tanto, estaremos construyendo un proceso de pruebas deficiente.

Puntos clave de la automatización de pruebas

 

Poder realizar unas pruebas automáticas simples requiere mucho tiempo, y tener claros ciertos puntos previos antes de lanzarse a realizar la codificación de las pruebas, o la generación de los datos de prueba. Para ello, es importante definir una estrategia de comunicación clara, que ha de ser simple y como dijimos, para que lo sea hemos de invertir un tiempo previo en pensarla:

  • ¿Qué queremos automatizar?
  • ¿Realmente es necesario automatizar las pruebas?
  • ¿Qué debe automatizarse y qué no?
  • ¿Qué cobertura queremos cubrir?
  • ¿Cómo enfocamos la generación de datos de pruebas?
  • ¿Qué entorno es el más adecuado para la ejecución?
  • ¿Quién va a realizar y mantener estas pruebas?

Para poder realizar estas tareas correctamente, necesitamos un equipo adecuadamente formado, que sea capaz de realizar el análisis del componente o sistema a probar, y disponga de la experiencia adecuada para poder realizar las labores de codificación y mantenimiento de software de manera efectiva.

Tras la creación de las pruebas, no debemos de olvidar otro factor definitorio del éxito de nuestras pruebas: el entorno. Este ha de pensarse previamente, que disponga de las características necesarias para la ejecución y análisis de las pruebas. Estos entornos no sólo se refieren a las herramientas que se ejecutan sobre ellos, si no a los recursos técnicos de los mismos (capacidad de cómputo, volumetría de datos, etcétera).

En definitiva, el proceso de automatización de pruebas, al igual que el proceso de testing, ha de visualizarse como una seria de actividades que se retroalimentan, bajo un marco de mejora continua, buscando el objetivo de conseguir la mayor calidad, no sólo en las pruebas a ejecutar, si no en las tareas que se realizan a lo largo del tiempo, las cuales nos garantizan la automatización efectiva de nuestras pruebas.

En SQS, estamos especializados  en diseñar e implantar entornos automatizados de prueba que faciliten y reduzcan el coste de la realización de pruebas de regresión.

Formamos al cliente para que sea capaz de mantener el entorno de una forma eficaz y profesional.

Podemos ayudarle para automatizar sus pruebas de unidad, integración y sistema, utilizando herramientas de automatización propias y de terceros.

¡No dudes en contactarnos para saber más acerca de nuestro servicio de automatización de pruebas!