Sobre la automatización de pruebas

La automatización de pruebas es un elemento siempre presente cuando se elabora un plan de pruebas, y la pregunta suele ser ¿debería automatizar ésto?

Así que hoy toca hacer un repaso sobre ello. Primero, para tener claro lo que es, y después, para tener claro cuando hacerlo.

¿Qué es la automatización de pruebas?

La automatización de pruebas consiste en la ejecución de software, distinto al sistema sujeto a prueba (SSP o SUT, por sus siglas en inglés), que se encargará de realizar las funciones programadas según el plan de pruebas y que comprobará el resultado obtenido con el resultado esperado.

pruebas automatizadas

Puedes encontrar dos enfoques diferenciadores a la hora de realizar pruebas automatizadas:

  • Pruebas a través de interfaz gráfica: En este enfoque, se utilizan herramientas que, con el ODP disponible, simulan fielmente las acciones que realizaría un usuario (clicks de ratón, en botones, escribir, etc…)
  • Pruebas a través de API: En este caso, habitualmente estamos hablando de pruebas que se realizan directamente sobre clases, módulos y librerías, a las que se les pasa una serie de argumentos para comprobar su funcionamiento.

Casos en los que deberías automatizar pruebas

El hecho de automatizar pruebas es una de las claves de la cultura DevOps.

Algo que deberías tener claro antes de seguir leyendo, es que el objetivo de automatizar pruebas no debe ser eliminar el testing manual.

Es importante tener esto muy claro ya que, en el testing manual se detectan elementos que no conseguiría detectar una herramienta software o, en caso de hacerlo, en muchas ocasiones no le es posible diferenciar si es un error o un falso positivo.

Así que, recuerda, aunque debas incrementar el papel que juegan las pruebas automatizadas sobre tu plan de pruebas, y debe ser mayor que las pruebas manuales, no intentes acabar con estas últimas.

Y para que quede más claro, éstos son los casos en los que deberías automatizar el testing

Casos repetitivos

Aquellos casos en los que se deba realizar una acción en muchas ocasiones, independientemente de su extensión. Un ejemplo habitual de estos casos, podría ser hacer login en la aplicación.

Pero en este apartado no solo entrarían las pruebas sobre una función. También podrías automatizar, por ejemplo, el proceso para incluir información en la base de datos, de forma previa a las pruebas posteriores para hacer consultas.

Casos muy largos

Si una acción te va a consumir mucho tiempo, también te conviene automatizar. Hablando claro, de procesos sencillos.

En este caso, también entraría el ejemplo anterior de la base de datos, donde tienes que ingresar muuuuucha información.

También te sería útil la automatización de pruebas, por ejemplo, para comprobar todos los enlaces de tu aplicación web.  

Una ventaja importante que supone automatizar en estos casos sobre realizarlos manualente es que, la probabilidad de cometer un error en las pruebas, crece conforme el tamaño de caso aumente.

Lógicamente, cuantas más cosas haya que probar, más fácil será que alguien se equivoque al introducir un dato, o realizar una comprobación.

Pruebas de regresión

Las pruebas de regresión, son aquellas cuyo objetivo principal es encontrar defectos o diferencias en relación al comportamiento esperado, después de un cambio en el software.

Este caso, deriva de los anteriores, ya que, al venir posteriormente de algo que ya se ha probado, empezará a ser repetitivo. Aunque lógicamente, habrá que tener en cuenta las modificaciones realizadas.

Y, ante grandes proyectos, el tiempo empleado para realizar dichas pruebas obviamente crecerá.

Beneficios de testing automatizado

Bueno, pues ahora que ya sabes qué es, y cuando deberías hacerlo, vamos a ver por qué deberías hacerlo.

Principalmente, aunque hay más motivos, yo destaco dos por los que deberías automatizar pruebas.

El primero es el ahorro de tiempo y, como he dicho en anteriores ocasiones, esto deriva en un ahorro de costes y una mejora de la productividad.

Reconozco que uno de los motivos que me llevó a estudiar Informática es la satisfacción de que una máquina haga lo que yo le pida 🙂

Y el segundo, sería la fiabilidad. Y es que, nos guste o no, por desgracia nos podemos equivocar haciendo pruebas, o incluso programándolas. Pero la máquina hace lo que le decimos, y si se lo hemos dicho bien, lo realizará las veces que hagan falta.

Herramientas para la automatización de pruebas

Existen muchas herramientas disponibles para automatizar pruebas.

Tanto Open source, como herramientas de pago (en mayor número)

Si tuviera que destacar 2 en estos momentos, serían Selenium y Appium. Tanto por la repercusión que van cogiendo en mi trabajo del día a día, como a que cada vez tiene un papel más protagonista en la disponibilidad de cursos, charlas y talleres.

Selenium

Selenium es un framework para pruebas de aplicaciones web.

Selenium hace uso de Selenium IDE, una herramienta que permite la programación de las pruebas sin que sea necesario aprender un lenguaje de script de pruebas.

No obstante, también es posible programar las pruebas en los lenguajes más habituales: Java, Javascript, Python, PHP…

Funciona tanto en Windows, como Linux y Mac, con las últimas versiones de los navegadores más utilizados (Chrome, Firefox y Safari) y además es Open Source.

Tienes disponible más info en su sitio web

Appium

Appium en una herramienta de automatización de pruebas para aplicaciones móviles, tanto nativas, como híbridas o web apps.

Sirve para aplicaciones Android, iOS y Windows, gracias al uso del protocolo de Selenium WebDriver.

Su instalación es muy sencilla.

Puedes ver más info en su sitio web.


Y sin más, no podría acabar este artículo sin un mensaje de dos de mis robots favoritos 🙂

Automatizar pruebas o no

Fuentes:

Deja un comentario