Continuando con nuestro programa de capacitaciones en Testing, compartimos una nueva charla introductoria a la automatización, sus ventajas y los pasos para decidir qué automatizar en esta ocasión a cargo de Esteban Toppazzini, Director de Operaciones México en CDA.

El primer interrogante fue “¿Para qué automatizar?”

Hacer todo a base pruebas manuales resulta en márgenes de tiempo más acotados, limitándose a los horarios de oficina. Las pruebas automáticas, en cambio, puede hacerse en cualquier momento.  Este es solo uno de los motivos por los que automatizar es muchas veces la mejor opción. ¿Cuáles son los demás?

Los contextos dinámicos obligan a cambios continuos y estas modificaciones de software deben ser probados constantemente, generando una necesidad de testeo más frecuente.

Estos cambios también se deben probar en múltiples dispositivos (celulares, trablets, ordenadores), sistemas operativos (Android, IOS, etc) y navegadores (Google Crome, Firefox, Edge, entre otros). Lo cual multiplica la cantidad de pruebas que se deben hacer de acuerdo con cada uno de ellos. Cada caso de prueba tiene diversos escenarios donde se ejecuta, debido a la variedad de soportes que deben funcionarle al usuario. Es decir, por cada caso de prueba se realizan muchas ejecuciones.

La automatización también es útil porque acelera el proceso de pruebas funcionales y facilita enfocar los esfuerzos de esta área en aspectos con valor agregado y nuevas funciones.

Además de su utilidad, veamos cuáles son sus ventajas:

  • Permite frecuentes pruebas de regresión. Es decir, probar lo alcanzado por el cambio junto con toda la periferia, para asegurarnos de que esta última continúa funcionando. Se da cuando la web o aplicación Mobile tiene pequeños cambios constantes.
  • Rápida retroalimentación a los desarrolladores. En caso de errores deja las evidencias (si la automatización se configura de esa manera). De este modo, permite que se empiece a corregir más rápido.
  • Re-ejecución ilimitada de casos de prueba. Si hay algo inestable se lo puede dejar ejecutando todo el tiempo que sea necesario, sin la necesidad de estar del otro lado de la pantalla. Al no necesitar de una persona, se pueda ejecutar casi constantemente.
  • Soporte adecuado para metodologías agiles. Se adapta más a los proyectos bajo este tipo de metodologías que a las tradicionales.
  • Documentación especifica.

 

 

¿Como priorizar la automatización?

Cada paso de prueba de ejecución manual debe pasar por un proceso de análisis y priorización de la automatización. Así, se descartan rápidamente los casos de prueba que no pueden ser automatizados y para el resto se determina su prioridad en la atención.

Si bien un alto porcentaje de automatización ayuda a disminuir los tiempos de prueba, es cierto que desde el punto de vista de las ejecuciones su construcción conlleva un esfuerzo y su posterior mantenimiento también.

Automatizar el 100% no es lo más recomendable. Por lo tanto, es importante determinar qué automatizar y qué no. Y, dentro de lo que se va a automatizar, qué se aborda en primer lugar. Esta decisión dependerá de cada empresa.

Para decidir qué caso de prueba va a automatizarse, tenemos 6 líneas de interrogantes para guiarnos:

  • 1. En un primer momento se piensa si el caso de prueba es automatizable. Si no puede ser automatizado, debe marcarse como tal y eliminar para futuras referencias como candidato a la automatización. Se debe tener en cuenta qué es lo que se está probando para saber si es conveniente o no automatizarlo. Un ejemplo de estos casos es la Biometría.
  • 2. Para los que sí se pueden automatizar, que son la gran mayoría, se tienen que establecer prioridades por una cuestión de recursos y tiempo. Determinar si la prioridad es baja, media o alta. Para eso la pregunta sería: ¿Qué tan crítica es la funcionalidad para el negocio? Para la priorización se debe tener en cuenta la visión del negocio, prioritaria incluso por sobre la óptica de sistemas. La criticidad en la funcionalidad está dada tanto en su operación como en su exposición. El valor de la prioridad desde la óptica del negocio se puede poner entre 1 y 10.
  • 3. Desde la visión del tester el interrogante es ¿Qué tan seguido debe ser ejecutado el caso de prueba? Aquí la elección dependerá de la cantidad de veces que lo tenga que ejecutar, así como de la variedad de soportes. Cada caso de prueba diseñado pasa a ser utilizado para las pruebas de no afectación o pruebas de regresión. Sin embargo, hay que considerar que las regresiones full suceden pocas veces. Por ende, aunque se desee automatizar casos de prueba que conformen la regresión, se debe dar prioridad a aquellos que conlleven más ejecución.
  • 4. Para la automatización ¿Qué tan compleja es la escritura del script? No todos los scripts de la automatización implican el mismo grado de dificultad, sea este por la programación en sí misma como su “longitud”. Por lo tanto, es deseable comenzar con los que resultan menos complejos para subir más rápidamente el porcentaje de cobertura de la automatización. Se debe pensar si es complejo desde el lado de la ejecución.
  • 5. Desde la visión del desarrollo, ¿Qué tan estable se encuentra la funcionalidad? A pesar de aplicar buenas prácticas de programación, a veces los cambios en una funcionalidad conllevan al cambio en una automatización. Por otro lado, la utilización del Gherkin para escribir los casos de prueba permite que el automatizador comience su actividad aún antes de contar con el desarrollo. No obstante, debe tenerse en cuenta si la funcionalidad no se encuentra estabilizada o genera muchos errores en el ambiente de desarrollo. Si la funcionalidad es inestable y arrastra al Script, se termina teniendo que arreglar ambos constantemente, por ellos se debe priorizar la más estables.
  • 6. Visto desde la producción, ¿Qué tan seguido se ejecuta esta funcionalidad? Una funcionalidad que se ejecuta muchas veces en producción tiene más visibilidad en un error que una funcionalidad específica y puntual, orientada solo a cierto tipo de clientes. El error no es menos grave pero la exposición es menor si se utiliza menos veces. Es más prioritaria una funcionalidad que se ejecuta más veces, aunque parezca más básica.

Una vez analizados estos criterios podemos decidir qué atender primero para automatizar y por qué, evaluando qué óptica tiene más peso. Veamos como ejemplo, la siguiente tabla de priorización:

CDA provee servicios de testing como parte integral de los servicios de aseguramiento de calidad, los cuales pueden realizarse como una actividad independiente y cubren desde el test unitario, las pruebas de desempeño y automatización de casos de prueba, hasta las pruebas de aceptación de usuarios.

Nuestra trayectoria y experiencia nos avalan, si estás pensando en automatizar tus pruebas, no dudes en consultarnos. Podemos colaborar con tu negocio.