Blog

⚙ Automatizar Pruebas de Software: Consideraciones y herramientas

Conoce qué son y en qué consisten la pruebas automatizadas, sus diferencias con el testing manual, así como algunas consideraciones clave para determinar cuando un caso se considera automatizable, según el contexto y los objetivos del proyecto.

Consideraciones clave y herramientas para automatizar pruebas de software
Foto de Digital Buggu en Pexels

“Automaticemos las pruebas tanto como sea posible”. Eso siempre suena como una buena idea, ¿verdad? Es la forma en que va el mundo en general, ¿no? La práctica de automatizar pruebas de software puede ser un gran elemento potenciador de la productividad, pero solo en ciertos contextos.

En este post, te presentamos un enfoque para la automatización de pruebas de software, con el objetivo de reconocer su viabilidad de acuerdo al contexto del proyecto.

Primer paso: Identificar el contexto del proyecto

Es muy útil para un tester comprender qué es la automatización y cuándo algo es automatizable. Asimismo, debe saber cómo esta práctica puede optimizar su trabajo, ya sea colaborando con otros colegas, otros desarrolladores o probando una herramienta de automatización.

¿No tienes experiencia con la automatización? Conoce algunos conceptos fundamentales, su importancia y beneficios, en relación con las pruebas manuales.

¿Por qué Automatizar Pruebas de Software?

Históricamente, la automatización surgió para reducir el esfuerzo humano requerido en actividades que podrían ser replicadas por un sistema o máquina programable. Al automatizar pruebas de software se busca simplificar el trabajo dispendioso, repetitivo o complejo, haciéndolo efectivo y más productivo.

De esta manera, es posible ahorrar energía, tiempo y costos asociados. A su vez, liberar de tiempo valioso a los testers para que se concentren en otras tareas.

“La automatización no podrá nunca reemplazar al ojo humano. Pero es una excelente herramienta para ampliar lo que podemos alcanzar con nuestros esfuerzos”.

Federico Toledo, COO de Abstracta Inc.

Automatización de Esfuerzos Manuales

En el desarrollo de software, el testing manual puede abordarse mediante la automatización de ciertos esfuerzos que se realizan manualmente. Partiendo de que los pasos seguidos por las personas se traducen en secuencias de comandos repetibles, los testers pueden concentrar su energía en otras tareas específicas que proporcionan un mayor valor y reducen los tiempos de ejecución.

En algunos casos, la automatización nos permite realizar pruebas que un humano no podría, especialmente teniendo en cuenta la limitación del número de ejecuciones que podemos hacer en un determinado período de tiempo.

¿Cuándo un test es Automatizable?

Esta suele ser una de las preguntas más comunes entre los testers. Y es que saber cuándo automatizar pruebas de software implica evaluar la inversión potencial, el enfoque, los beneficios y lo que es más importante, el conocimiento que se tenga del proceso manual.

En primer lugar, el tester debe entender completamente y convertirse en experto del testing manual, y solo entonces es posible automatizar.

“Si la persona que ejecuta una prueba de forma manual lo hace solo siguiendo instrucciones, sin curiosidad, criterio ni compromiso, no va a lograr hallar todos los errores necesario”.

Federico Toledo, Quality Engineer y doctorado en informática.

El conocimiento integral del proceso de testing manual, es crucial para saber cuándo algo es automatizable. Esto implica que las pruebas manuales no son completamente sustituibles. Usualmente, hay un debate sobre la inminente desaparición de este tipo de pruebas, ¡simplemente no pueden desaparecer!

Mitos comunes de la Automatización de Pruebas

Automatizar pruebas de software tiene sus ventajas y desventajas. Depende del proyecto, el tiempo, el costo, la calidad y la metodología. Otro aspecto importante es que más allá de automatizar o no automatizar, se debe tener en cuenta el contexto.

Además, hay que considerar que todo se basa en cumplir los objetivos de la mejor manera posible, seleccionando y aplicando los métodos, herramientas y habilidades adecuadas.

Entre los mitos comunes sobre la automatización de pruebas encontramos:

  • Sí es posible automatizar todo.
  • La automatización siempre conduce a una mejor calidad de software.
  • Las pruebas automatizadas son mejores que las pruebas manuales.
  • La automatización trae un rápido retorno de la inversión (ROI).

Desde luego, puede haber ocasiones en que uno de estos mitos sea realmente cierto, pero eso sería una excepción a la regla.

Principios de las Pruebas de Software

Según Context-Driven Testing School, los siete principios que ayudan a comprender el objetivo del testing manual o automatizado son:

  • El valor de cualquier práctica depende de su contexto.
  • Hay buenas prácticas en el contexto, pero no hay “buenas prácticas”.
  • Las personas, trabajando juntas, son la parte más importante del contexto de cualquier proyecto.
  • Los proyectos no son estáticos y regularmente toman caminos impredecibles.
  • El producto es una solución. Si el problema no se resuelve, el producto no funcionará.
  • El testing de software es un proceso intelectual desafiante.
  • Solo a través del juicio y la habilidad, considerados durante todo el proyecto, hacer las cosas correctas en el momento adecuado para probar nuestros productos de manera efectiva.

Estos siete principios fueron propuestos por Cem Kaner, James Bach y Brett Pettichord en su libro “Lecciones aprendidas en Software Testing: un enfoque basado en el contexto”.

Testing Manual vs. Testing Automatizado: Importancia, beneficios y costos

Al inicio, es posible que quieras automatizar todo, pero el costo de desarrollar y mantener los scripts para las pruebas automatizadas no es una decisión que deba tomarse a la ligera.

Cuando en un proyecto se apuesta por automatizar pruebas de software, debería idealmente tener una base sólida, comenzando con los casos de prueba unitarios y evitando tantos errores como sea posible.

La automatización debe contar con un feedback inmediato y continuar sucesivamente a las diferentes capas. De esta forma, las pruebas manuales y exploratorias son más valiosas a nivel de la interfaz de usuario, para después centrarse en aquellas pruebas que no son posibles de automatizar.

Este proceso lo explica detalladamente la pirámide de automatización de pruebas de Mike Cohn:

Pirámide de automatización de Pruebas de Mike Cohn

A la izquierda en el antipatrón del cono de helado, vemos cómo se realiza comúnmente la automatización y a la derecha la forma ideal de las pruebas automatizadas, donde las pruebas unitarias tienen una mayor relevancia en la pirámide de Cohn.

Pruebas Automatizadas vs. Pruebas Manuales

Aunque existen diferencias entre las pruebas automatizadas y manuales, no son mutuamente excluyentes. Más bien se consideran tareas complementarias en la búsqueda de una mejor calidad de software.

Si pensamos en el retorno de la inversión del testing, probar una nueva funcionalidad manualmente nos permite a los testers conocer más sobre la aplicación, a bajo costo y rápidamente. A medida que aumenta la curva de aprendizaje, el inventario de las pruebas aumenta. Por ende, también sube el costo para las pruebas manuales.

Costo de las Actividades de Prueba

La automatización de pruebas tiene un costo inicial más alto, que disminuye a medida que se avanza, tal como lo ilustra la siguiente imagen:

Costos asociados a las pruebas manuales y automatizadas
Fuente: QATest Lab Blog

Vemos que la automatización tiene una gran inversión inicial hasta el “punto de quiebre”, donde comenzamos a ver el impacto positivo que genera en los costos a largo plazo, y sucede a la inversa con las pruebas manuales. Por lo que podemos estimar que ambos tipos de pruebas son totalmente compatibles, generando beneficios a corto y largo plazo.

¿En qué consiste la Automatización de Casos de Prueba?

Ahora que ya somos conscientes de la importancia y de los beneficios de la automatización, tenemos que identificar los casos que podemos automatizar, considerar el objetivo y el nivel de calidad.

Objetivos de la Automatización de Casos de Prueba

Lo primero que buscamos es apuntar siempre a un mayor nivel, y analizar si la automatización “encaja” dentro del proyecto. Para responder a este interrogante, es aconsejable realizar un análisis de viabilidad en relación con los objetivos.

Estos son algunos escenarios en los que tiene sentido automatizar:

  • Existe una deuda técnica que eliminar.
  • Las pruebas de regresión requieren mucho tiempo.
  • El proyecto es altamente complejo y de largo plazo.

¿Qué tipos de Casos de Prueba son Automatizables?

Como hemos visto, no todo es automatizable, depende del contexto. Por tanto, es muy importante determinar qué casos son adecuados para nuestro objetivo:

  • Desde la perspectiva del desarrollador y a nivel de código, las pruebas unitarias son las más sencillas para hacer un script.
  • Del lado del tester, generalmente se trabaja en la automatización de los casos de regresión a nivel de UI y API, pensando primero en los flujos más críticos y complejos.

Pruebas de Regresión

Una vez hay un conjunto de pruebas definido para ejecutarse periódicamente después de cada lanzamiento o liberación de nuevas versiones del producto, el esfuerzo para ejecutar manualmente los tests se vuelve repetitivo. Además de restar tiempo a otras tareas que no son automatizables, y donde podemos proporcionar más valor.

Los casos de prueba de regresión son altamente automatizables. Es viable incorporarlos dentro de un modelo de integración y entrega continua.

Esto no solo agrega valor en términos de costos, también en el tiempo disponible para realizar otras tareas, puesto que los scripts se pueden ejecutar sin supervisión.

Pruebas Basadas en el Riesgo

Risk-based testing o el testing basado en riesgos, consiste en verificar las funciones críticas y de alta prioridad que, si fallan, afectan en gran medida al modelo de negocio.

Automatizar los casos que prueban estas funcionalidades puede ayudar a encontrar, – casi inmediatamente después de cada lanzamiento, los incidentes más críticos para abordar a tiempo.

Pruebas complejas y/o que consumen mucho tiempo

Puede haber casos en un proyecto que son complejos de reproducir manualmente, por lo que si lo llevamos a un script, será más fácil ejecutarlos de manera automatizada.

Por ejemplo, un formulario con muchos datos en donde el tester sea más propenso a errores. Especialmente si tiene que probar el mismo formulario con muchas variantes de datos diferentes.

En general, sí es posible minimizar la probabilidad de errores mediante la automatización.

Casos de Prueba Repetitivos

Al igual que las pruebas de regresión son una proceso altamente repetitivo, podemos tener casos de prueba particulares en los que conviene automatizar. Por ejemplo, al probar manualmente una gran cantidad de datos para el mismo flujo, llevaría una cantidad de tiempo considerable. Y si hay que repetir el proceso, se vuelve una tarea tediosa.

Sin embargo, al automatizar un flujo, podríamos parametrizar estos datos y así olvidarnos de tener que probar cada valor manualmente. Práctica también conocida como prueba basada en datos o test dirigido por los datos (Data-driven testing).

Básicamente, esto consiste en una prueba automatizada que se parametriza y se alimenta con información de una fuente de datos, como un archivo o una base de datos.

Herramientas para Automatizar Pruebas de Software

Herramientas para Automatizar Pruebas de Software
Foto de JESHOOTS.COM en Unsplash

Ahora que sabemos qué automatizar, podemos pasar a seleccionar la herramienta que vamos a utilizar. Esta actividad puede ser una de las más complejas de analizar inicialmente, dado el número de herramientas disponibles en el mercado.

No obstante, la decisión tendrá que considerar el proyecto, el presupuesto, el conocimiento y la experiencia de los involucrados en el equipo.

Opciones open source: Comerciales y personalizadas

Las herramientas de testing disponibles varían en sus limitaciones y posibilidades. Entonces, ¿cómo seleccionar la herramienta correcta para automatizar una prueba? Primero, debes tener claridad de los requisitos y analizar el costo-beneficio de su uso.

En Abstracta tenemos una amplia variedad de herramientas que seleccionamos de acuerdo con el contexto del proyecto. Sin embargo, nuestras herramientas de automatización de pruebas favoritas son:

Selenium

Selenium es una herramienta de código abierto, ampliamente usada en todo el mundo para probar aplicaciones web en múltiples navegadores y plataformas.

Appium

Appium es una herramienta open source basada en Selenium para automatizar las pruebas, principalmente en dispositivos móviles para iOS y Android.

Cucumber

Cucumber es parte del enfoque BDD (Behavior Driven Development). Destaca por ser una herramienta muy intuitiva y con una amplia variedad de funcionalidades para automatizar.

Ghost Inspector

Lo más interesante de la herramienta Ghost Inspector, es que nos permite automatizar sin saber codificar, lo que la convierte en una opción ideal para principiantes en el testing. Revisa aquí. la reseña de Ghost Inspector de Abstracta.

Mabl

Mabl es una herramienta SaaS que ataca tres problemas del testin de softwareg: velocidad, cobertura y confianza. Descubre cómo simplifica la creación y el mantenimiento de los tests, y cómo realizar pruebas de API y de UI en este post.

GXtest

En Abstracta desarrollamos GXtest para facilitar la automatización de aplicaciones desarrolladas con GeneXus de una manera simple; de hecho es la única herramienta de su tipo. GXtest también permite incorporar pruebas en un motor de integración integración continua y entrega continua (CI/CD).

Revisa aquí más detalles de esta herramienta de automatización que reduce el tiempo de las pruebas de regresión en un 50%.

Si bien no hay herramientas definitivas para automatizar todos los tipos casos de pruebas, siempre hay opciones que ofrecen más flexibilidad. Esto dependerá de los objetivos, la aplicación bajo prueba y otras consideraciones.

¿Por qué es importante optimizar los tiempos con Test Automation?

En general, podemos encontrar diferentes formas de guiar nuestros esfuerzos para automatizar una prueba. Pero lo más importante es tener un propósito y un objetivo bien definidos. El contexto de la aplicación bajo prueba no es un detalle menor y deberíamos saber que no todo es automatizable. Por tanto, el ROI de las pruebas proviene del trabajo de un buen análisis de factibilidad.

En cualquier caso, es recomendable que la automatización se realice en todos los niveles, con un mayor esfuerzo en los niveles más bajos, como las pruebas unitarias y de API, y no solo en las pruebas a nivel de interfaz de usuario (GUI).

De esta manera, podremos evitar un mayor número de errores y acompañar la prueba manual, que necesita la facultad de los testers, minimizando la carga excesiva de tareas repetitivas que se pueden automatizar.


¿Quieres iniciarte en testing automatizado o quieres profundizar tus conocimientos en ejecución de pruebas?

Descarga nuestro último e-book sobre pruebas de software automatizadas, o accede a más recursos sobre automation en nuestro blog.

Automatización de Pruebas Funcionales: E-book introductorio de Abstracta

En este libro compartimos las consideraciones para ejecutar pruebas automatizadas de forma efectiva. Así como de la experiencia de Abstracta en más de 150 proyectos de automatización finalizados con éxito, entre otros aspectos:

  • Cuál es el valor comercial y el de TI de la automatización de pruebas, así como su ROI potencial.
  • Qué, dónde, cómo y cuándo automatizar.
  • Prácticas y enfoques líderes en la industria TI que brindan una máxima efectividad.
Automatización de pruebas funcionales - Guía Introductoria Abstracta

Otros contenidos relacionados

Testing Manual vs. Automatizado: ¿cuál elegir para tu proyecto?

La ruta hacia el Test Automation

Cómo evitar falsos positivos y negativos en la Automatización de Pruebas

Cómo elegir la mejor Herramienta de Automatización de Pruebas para tu proyecto en 5 simples pasos

Velocidad de herramientas low code para automatización


32 / 211