31 de octubre de 2019

Como la inteligencia artificial nos ayuda en la realización de pruebas más eficientes.


En la mayoría de equipos existen, aún, tiempos muertos o de espera que crea mucha frustración y desesperación. Esto es a causa de la ineficiencia en los procesos de entrega, complejidad, burocracia o incluso cuellos de botella.


Ni siendo puristas, ni utilizando elementos de integración continua, podemos evitar que existan atascos que vengan desde cualquier persona o equipo, aunque, habitualmente, el atasco y la problemática general suele tener un único culpable: el equipo o área de testing.

Hace ya bastante tiempo, si hablamos de pruebas puras y duras, nos convertimos en una pieza más dentro del ciclo de vida del desarrollo, pudiendo aportar, más o menos en el proyecto y empujando para que las cosas se hagan de la mejor manera. Desde ese momento, nuestro trabajo no ha cambiado demasiado, tenemos que preocuparnos en garantizar la calidad de las entregas, realizar pruebas (ya sean automáticas o no) y enfocarnos en que la caja negra que tenemos encima de la mesa esté funcionando lo mejor posible.

Realizamos planes de prueba que detectan defectos, confiando en que nuestra pericia y conocimiento del negocio en concreto pueda ayudarnos a detectar el mayor número de cosas y que todo salga perfecto. Tras ello, introducimos la automatización donde ahorramos tiempo, podemos mejorar el realizar tareas repetitivas con un solo Click, pero, en un punto, diría yo, de no retorno, esto se vuelve ineficiente y empieza a no existir un beneficio como tal. Este punto, que  invierte el coste y el esfuerzo, se da cuando la mantenibilidad que hay que dedicar a las pruebas es tal que no nos supone ningún tipo de beneficio el tener una enorme batería de pruebas automatizada que garantice nuestra puesta en producción. Si eso ocurre, hemos sobrepasado el punto de no retorno y estaremos invirtiendo demasiado sin beneficio alguno.

En la mayoría de los casos, la ineficiencia de las pruebas, viene dada por que existen áreas de código que no se han probado adecuadamente, no se han visualizado o no tienen una cobertura de pruebas adecuada que permita garantizar todas las casuísticas que se quieren probar o se deben de controlar.
En este caso, si introducimos procesos de IA, la cosa cambia y podemos aportar un cierto punto de inteligencia que nos haga detectar casuísticas extrañas y que no se escape ningún camino sin probar adecuadamente.

La inteligencia artificial funciona mejor cuando tiene una gran cantidad de puntos que analizar, ya sean datos o elementos recurrentes. De esta manera, encontrará tendencias, realizará predicciones e identificará casuísticas que puedan probar lo necesario o solucionar agujeros que, hasta ese momento, eran muy complicados de detectar.

El cambio de paradigma con este tipo de sistemas y herramientas es más que satisfactorio y se están convirtiendo en un potencial amigo de los tester que las apliquen en sus proyectos. 

El principal foco, es que esta IA aprende constantemente y puede llegar a comprender como se está ejecutando el código, como interactúan aplicaciones o como se relacionan terceros entre si para que una funcionalidad en concreto funcione como debe. A esto, hay que sumar la gran rapidez de lectura y procesamiento de información que permite bajar el tiempo de realización de pruebas de una manera más que considerable, pasando de minutos a segundos en un abrir y cerrar de ojos.

En este caso, si nos ponemos puristas, al introducir algún tipo de IA en nuestro proceso de pruebas, en el que, mínimamente deberían de existir tres controles de calidad con ejecución de diferentes pruebas (ya sea el análisis de código, las pruebas unitarias y las pruebas funcionales), con este tipo de sistemas, se permite comprender diferentes interactuaciones, procesar todo tipo de datos en segundos y permitir que se valoren y traten que zonas de la aplicación tienen mayor riesgo de fallo o una tasa más alta de mal funcionamiento a lo largo de todo el código. Esto, detectará que zonas no tienen una cobertura adecuada y nos permitirá poner el foco en solucionarlo y ampliarla para que no tengamos un agujero en nuestro software.

Desde el punto de vista del tiempo invertido, si introducimos procesos de ejecución de pruebas con IA e incluso, con RPA, se reducirá de manera exponencial y podemos invertir el tiempo extra en ampliar o consolidar baterías de pruebas ya realizadas.

La visibilidad que podemos ganar con la introducción de sistemas de inteligencia artificial es enorme, pudiendo utilizar diferentes datos recopilados para identificar código modificado o cambiado, definir de manera automática las ejecuciones de pruebas que han de lanzarse o que conjuntos de prueba son más factibles de utilizar en base al despliegue o zonas modificadas del código. 

Este nuevo enfoque nos cambiará la visión de manera total, siendo, más bien, una manera de encontrar defectos más rápido, permitiendo ciclos de retroalimentación más robustos y haciendo que podamos garantizar la entrega de una manera mucho más sencilla y con una inversión de tiempo, considerablemente menor.

El futuro de la inteligencia artificial es aún turbio y no podemos saber cual será el próximo paso, pero si sabemos que puede ir dirigido a los micro servicios y a revisiones de informaciones mucho más complejas y detalladas. 

Sobre todo, si que podemos saber que cuando más demanda exista de puestas en producción más rápidas, tiempos de ciclos más cortos y velocidades de crucero mucho más rápidas, el introducir sistemas de IA en nuestros proyectos será la única manera de poder mantener todas estas casuísticas y que no vuelvan a aparecer cuellos de botella o ralentizaciones incómodas en los ciclos de vida de los desarrollos que tenemos que probar. 

El futuro ya está aquí y debemos de ser capaces de adoptarlo y ponerlo en práctica en cada proyecto donde nos involucremos.

0 Comentarios:

Publicar un comentario

¿Hablamos?

Cuéntanos como ayudarte

Si quieres más información sobre lo que hacemos, necesitas ayuda o quieres hablar con nosotr@s, solo tienes que ponerte en contacto.

Teléfono:

(+34) 648 961 876