Te va a interesar!

6/recent/ticker-posts

Automation e Inteligencia Artificial


Estaba yo codeando como un campeón, cuando escuchaba a mis compañeros quejarse de los locators en sus scripts. Como sabrán los que automatizan (y los que no, les cuento ahora), uno de los grandes problemas con Selenium y el test automatizado es que, cuando los amigos deos cambian un id de un web Element, o algún campo que modifica la manera en que lo encontramos en el HTML, los tests automatizados se rompen. No saben encontrar el elemento, tratan...esperan y, finalmente, devuelven una excepción "NoSuchElement".

El ingeniero de test tiene que ir a la página, usar su método favorito para ubicar el elemento, ver qué cambió y actualizar eso en el código. Todo esto es puro mantenimiento, porque no hay un defecto real en la aplicación, por lo que es, digamos...tiempo perdido. Hasta puede que un Tester manual se mofe de nuestros queridos robotitos diciendo "no se che, yo a mano encuentro lo más bien el botón!".

Es algo casi universal, de lo más tedioso y algo que despertó una idea en mi. En realidad, venía pensando esto hace un tiempo ya, pero lo había dejado en pausa un poco para los tutoriales del Patreon (que están increíbles y no te los deberías perder!) y otro poco porque estuve bastante ocupado con los clientes.

Para darles algo de contexto, les cuento que yo me dedico también a programar videojuegos. Lo hago más que nada como hobby y porque me gustan desde que era un niño con mi Commodore 64. En Game Programming, algo muy común son las FST. Esto es: Finite State Machine. Es la forma más rudimentaria de Inteligencia Artificial y, hablando mal y pronto, permite manejar los estados de un sistema. Si el personaje está quieto, puede pasar a diferentes estados. Si está saltando, no puede hacer otras cosas y eso lo lleva a otro estado, el cuál lo lleva a otro hasta que, eventualmente, lo deja en el estado del principio. Y así hasta donde queramos. Yo las he usado para manejar turnos en un juego de combate, para disponer de escenas en las que se tiene que decidir y en base a eso pasa una u otra cosa, etc.

Y ustedes se preguntarán: Pero qué tiene que ver esto que nos estás contando con Automation Testing! La idea que tuve en su momento fue poner a trabajar mis conocimientos en Game Programming y ver si podía juntarlos con mis conocimientos en Automation Testing. El resultado fue un prototipo, un diseño funcional de un framework que testee "solo" una web dada. Esto es, navegando el HTML y creando tests en función a lo que va encontrando.

En el mundo de la inteligencia artificial hay dos corrientes bastante diferenciadas: Una es la que va por el lado de las máquinas de Turing, en las que la idea es que no podamos distinguir si estamos interactuando con un humano o una máquina. La otra es la relacionada al análisis de grandes cantidades de datos a través de algoritmos de Machine Learning.

La idea para este nuevo proyecto que voy a estar llevando adelante es ver si, en principio, puedo utilizar la potencia de Machine Learning para que los tests que rompen debido a locators que cambian (lo que mencionaba al principio), pueden arreglarse sin intervención humana.

Para esto voy a empezar por un diseño funcional de cómo debería ser, para luego estar intentando añadir esta funcionalidad a un framework ya robusto y sencillo de Selenium con Gradle y Cucumber. Para eso voy a usar una librería para Java llamada Weka, creada en el bello país de Nueva Zelanda!

Los progresos, problemas, victorias y derrotas las voy a ir comentando acá y puede que también en video, para los que se interesen en el proyecto puedan seguir y comentar.

Eso es todo, hoy no traje debates picantes sobre Automation Testing y cómo deberían ser las cosas, sino más bien un proyecto que me tiene bastante emocionado por ver a dónde llegará!

The Free Range Tester

Publicar un comentario

0 Comentarios