Testing Automatizado (Automated Testing)


En esta entrada vamos a hablar un poco de testing Automatizado. Este tipo de testing es una gran herramienta con muchos beneficios si se la utiliza con conciencia y siempre midiendo la relacion Costo/Beneficio.

Definición:

Tiene distintos significados para diferentes personas en diferentes contextos. Cuando hablamos de pruebas automatizadas nos estamos refiriendo a: un método de ejecutar una prueba sin intervención humana, que de lo contrario lo requeriría. En términos prácticos puede significar una prueba de nUnit, una prueba de GUI usando una herramienta de prueba comercial o una prueba escrita con lenguaje de scripting interno de una aplicación.
La tecnología no es la principal preocupación, el hecho de que se puede ejecutar la prueba de 100 % sin ninguna participación humana es la clave.

¿Porque Automatizar?

La principal razón es el tiempo y con las pruebas automatizadas se puede reducir el tiempo de las pruebas. Además al automatizar las actividades comunes que no requieren de inteligencia humana, los testers reales pueden dedicar mayor tiempo a pruebas más críticas y caminos más elaborados dejando los caminos básicos a las pruebas automatizadas.

¿Cuales son los beneficios de las pruebas automatizadas?

  • Rapidez: Las herramientas de testing automatizado corren las pruebas significativamente más rápido que los testers humanos.
  • Fiabilidad: Las pruebas ejecutan precisamente las mismas operaciones cada vez que se ejecutan, eliminando el error humano.
  • Repetición: Se puede testear como reacciona el soft bajo repetidas ejecuciones de las mismas operaciones.
  • Programable: Se pueden programar pruebas sofisticadas y complejas que muestren información oculta de la aplicación.
  • Reusabilidad: Se pueden rehusar los scripts con pruebas automatizadas, las funciones, etc…

¿Qué casos de prueba debería automatizar?

  • Casos de prueba que se deban correr en cada nueva versión de la aplicación (Sanity Testing)
  • Casos de Prueba que utilicen distintos datos de prueba par alas mismas acciones. (Data Driven Testing)
  • Funcionalidades críticas de la aplicación (Smoke Testing)
  • Funcionalidades que no cambiaran en un periodo de tiempo relativamente corto
  • Escenarios de Pruebas de Performance

¿Cuales son las desventajas de las herramientas de automatización?

Las herramientas de testing automatizado no pueden medir la usabilidad de una aplicación.

Se requieren conocimientos en programación para poder adaptar los scripts automatizados a los requerimientos.

El mantenimiento de los scripts puede ser muy costoso.

Testing Automatizado vs. Testing Manual

Testing Automatizado Testing Manual
Pros:

  • Si se tienen que correr un juego de pruebas repetidamente, la automatización será de muchísima ayuda.
  • Nos permite correr las pruebas automatizadas sobre un código que cambia frecuentemente reduciendo el tiempo insumido en las pruebas de regresión.
  • Permite realizar matrices de pruebas combinando diferentes lenguajes con diferentes SO.
  • Permite realizar pruebas en paralelo en una o varias maquinas.
Pros:

  • Si el caso de prueba sólo se ejecuta dos veces ante un cambio en la codificación, probablemente debería ser una prueba manual antes que automatizada ya que el costo es mayor al beneficio.
  • Permite al tester ampliar más las pruebas durante la ejecución del caso de prueba. Encontrando más bugs ya que el tester puede inventar combinaciones impensadas mientras navega la aplicación y ante diversas situaciones.
Contras:

  • El esfuerzo inicial es mayor. La creación del script automatizado puede ser más costoso que la creación del caso de prueba para ejecución manual.
  • No se pueden (o puede ser muy costoso) automatizar referencias visuales como colores o ubicación en pantalla de objetos.
Contras:

  • Las pruebas manuales pueden consumir demasiado tiempo
  • Cada vez que hay un cambio en la aplicación el tester debe correr las pruebas de regresión. Ante reiterados cambios, el tester puede llegar a correr demasiadas veces las pruebas de regresión, reduciendo su capacidad de encontrar errores.
Otras Consideraciones:

  • Que la automatización sea costoso o no, también depende en el conocimiento que se tenga sobre la herramienta que se utilizará.
  • Siempre hay que tener en cuenta cual es el COSTO y cual el BENEFICIO de la manera que encaremos las pruebas que vamos a realizar (manual o automatizado) teniendo en cuenta el conocimiento de la herramienta a utilizar, conocimientos en programación, tiempo de las pruebas, cantidad de ciclos de testing, etc ….

4 comentarios sobre “Testing Automatizado (Automated Testing)

  1. Me parece muy buenas estas referencias; Soy Tester pero me falta mucho conocimiento en herramientas de automatización, saber cuando es recomendable el aplicar estas pruebas, cuales son los riesgos. ¿Existge algun curso online al respecto?. Gracias por la informacion.

    Me gusta

    1. Marcela,

      No conozco ningún curso OnLine como para recomendarte, pero puedes encontrar muchos buscando en google.
      En la actualidad puedes encontrar muchas guias en la red (las mejores estan en ingles) y auto-capacitarte con las mismas…

      Saludos,

      José

      Me gusta

  2. Hola:

    Estoy automatizando una aplicación web. Las herramientas que utilizamos son selenium y junit.

    Tengo bastante experiencia con pruebas funcionales. Sin embargo en automatización casi acabo de empezar. He conseguido automatizar una prueba que lanzo con eclipse, exportando la prueba desde selenium IDE.

    Mi pregunta no es técnica. Aunque hay cientos de blogs, foros etc… es esta una de las páginas donde me suelo enterar mejor de las respuestas que dais.

    El grupo de QA de mi empresa me ha dicho que es conveniente automatizar lo máximo en la aplicación.
    Aquí se sigue la metodología agil. Hemos acabado el primer sprint y viendo este articulo no me acabo de aclarar con esta duda.

    ¿He de crearme una prueba automática para cada link de la aplicación?. ¿Y una para cada boton, etc…?

    Para formularios, etc… lo tengo claro pero hay links del tipo «texto legal», «Politica de privacidad» que no se si es conveniente automatizar y separar cada uno de los cuales.

    Gracias por su respuesta en cualquier caso

    Me gusta

    1. Enrique,

      Me alegra que las respuestas de este blog sean de ayuda.

      En cuanto a tu pregunta, desde mi punto de vista, existe una gran confusión en cuanto a las pruebas automatizadas, donde muchas veces se tiene como premisa «Automatizar todo» como la mejor manera de implementar las pruebas automatizables, cuando en realidad se debe realizar un análisis más preciso de que necesito automatizar y que no ya que si bien suena muy bien la idea de automatizar absolutamente todo, el llevarlo a la práctica puede resultar muy costoso (creación y mantenimiento de scripts) y el beneficio que obtendríamos sería mínimo en algunos casos. Aplicando esta lógica a la metodología ágil, donde un sprint puede durar entre 1 semana a 3 semanas, el tiempo que puedas invertir en la creación/mantenimiento de los scripts puede resultar más que costoso no teniendo tiempo para dedicar a pruebas exploratorias donde las pruebas automatizadas pueden dejar importantes bugs sin descubrir.

      En cuanto si es necesario automatizar la verificación de cada link, yo te diría que verifiques el costo/beneficio que te puede traer tal automatización y el riesgo/impacto que tendría en el negocio que un determinado link/funcionalidad no realice las acciones que debería. Analiza en conjunto con el área de desarrollo las probabilidades de que tal o cual link cambie en futuras versiones y las probabilidades de que una funcionalidad se vea afectada de versión en versión.

      No dudes en preguntar cualquier otra duda que seguramente yo o algún otro lector pueda ayudar a resolver tus inconvenientes.

      Saludos,

      José

      Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.