Ir al contenido principal

El impacto de la IA en el contexto de automatización de pruebas de las UI

Las herramientas de automatización de pruebas "convencionales" han sido y son actualmente fundamentales para sustituir pruebas manuales, especialmente aquellas que requieren un gran esfuerzo humano o que son recurrentes y pueden ser automatizadas de manera eficiente, como, por ejemplo, pruebas de regresión repetitivas donde comprobamos en cada entrega que no se ha roto nada ante cambios y evoluciones en las funcionalidades.

La aplicación de la IA en el concepto de la automatización de pruebas ha impactado positivamente ya que en algunos casos herramientas ya existentes han adoptado capacidades de IA para sumar a las existentes y por otro, han surgido herramientas impulsadas por IA enfocadas en desarrollo “codeless”, lo cual facilita la creación de productos con menor complejidad técnica. En cuanto al tipo, la IA predictiva ayuda en el testing a identificar patrones y predecir posibles fallos antes de que ocurran, mejorando la eficiencia y precisión del proceso de pruebas. La IA generativa por otro lado ayuda a crear automáticamente datos y escenarios de pruebas, así como la generación de scripts y reports inteligentes.

La IA permite implementar enfoques como el análisis visual en interfaces de usuario (UI) y el procesamiento del lenguaje natural (NLP) para interpretar textos y patrones. Además, su capacidad para detectar y autoreparar cambios en la interfaz de usuario, que podrían pasar desapercibidos para las herramientas convencionales, representa un avance sumamente importante en la automatización de pruebas.

Otras capacidades significativas son la generación de datos sintéticos y el reporting inteligente, que permiten, por un lado, crear datos de prueba realistas y detallados para simular interacciones de usuario en la interfaz, y por otro, generar informes inteligentes que sugieren mejoras en el ciclo de prueba realizado (por ejemplo, un ciclo completo e2e que haga un proceso bancario), basándose en el análisis de datos históricos y patrones de uso. Además, el avance continuo de la IA generativa permitirá desarrollar otras capacidades de prueba, como la automatización avanzada de escenarios complejos, la detección proactiva de anomalías (mejorando la autoreparación actual que ya usan algunas herramientas) y la personalización dinámica de casos de prueba en tiempo real. Estas nuevas capacidades no solo optimizarán el tiempo y los recursos necesarios para las pruebas, sino que también permitirán una mayor adaptabilidad a los cambios rápidos en los requisitos del software, siendo estos una constante en los proyectos Agile donde se requiere un incremento continuo.

 

Valor añadido

 

Además de las capacidades mencionadas, otra igualmente importante es la generación de pruebas mediante IA generativa a partir de especificaciones funcionales, lo que reduce significativamente los costos asociados con su creación manual. En situaciones donde la automatización de pruebas no es viable debido a limitaciones de costos o falta de recurrencia que justifique su uso, la IA permite generar casos de prueba manuales basados en los requisitos funcionales definidos durante el desarrollo o mantenimiento del software. El siguiente fragmento muestra un ejemplo:

In our vwfs.es website we have created the "Servicios para empresas" page, let's check that it is accessed correctly in less than 5 seconds through the menu and we see an area of the screen

El motor de IA implementado permite crear automáticamente la descripción del caso de prueba, las etapas a seguir, los datos necesarios y los resultados esperados. La estructura generada puede además integrarse fácilmente con herramientas de gestión de pruebas a través de pluggins, como Jira X-Ray, facilitando su creación para que los testers manuales solo deban concentrarse en su ejecución.

En un contexto Agile, esta capacidad de IA generativa permite crear historias de usuario que desencadenan casos de prueba con sus respectivas etapas. Estas pruebas pueden adaptarse a un enfoque de desarrollo impulsado por el comportamiento (Behavior-Driven Development o BDD). Herramientas ya maduras como Cucumber son un ejemplo destacado de esta metodología, ya que integran escenarios definidos por el negocio directamente con pruebas automatizadas. El siguiente ejemplo realizado con la herramienta Digital Tester desarrollada por Deloitte©, muestra un fragmento en formato json:

En este contexto, además de obtener los casos de prueba para integrarlos como pruebas manuales en los plugins mencionados anteriormente,  estos pueden ser una input efectiva para herramientas como Cucumber que junto a frameworks de automatización como Selenium, Playwright o Cypress por destacar algunas, se encargan de su ejecución. De este modo, el tester puede centrarse exclusivamente en analizar los reportes generados para identificar posibles bugs y contribuir de manera más eficiente al ciclo de calidad.

Por otro lado, la combinación de Visual AI y NLP antes mencionada no solo optimiza la ejecución de pruebas, sino que también potencia capacidades avanzadas como el análisis predictivo y la generación automática de scripts de prueba. Estas funciones permiten identificar riesgos potenciales o áreas críticas en interfaces de usuario (UI) complejas con numerosos componentes gráficos, anticipándose a posibles fallos por ejemplo sobre la posición de los elementos en pantalla que un marco de trabajo de automatización de pruebas tradicional no podría detectar.

En resumen, algunos de los casos de uso que podemos encontrar en el contexto de estas herramientas son:

  1. Regresión visual: Identificación y registro de cualquier discrepancia entre las imágenes capturadas y las imágenes de referencia.
  2. Autoreparación: Durante el ciclo de prueba E2E, si hay cambios urgentes en el formulario, la autorreparación actualizará automáticamente los casos de prueba automatizados para reflejar estos cambios.
  3. Generación automática de código: En un sistema bancario, la autenticación de usuarios es vital y debe validarse regularmente para garantizar la seguridad. La generación de scripts de prueba mediante IA añade valor y mejora la eficiencia de las pruebas.
  4. Generación de datos de pruebas con datos sintéticos: En el sector bancario o seguros, estos datos permiten crear conjuntos diversificados y representativos para probar la detección de fraudes sin comprometer la privacidad de los clientes.
  5. Aumento de cobertura de pruebas: La IA permite ampliar la cobertura de pruebas al generar automáticamente casos de prueba adicionales que cubren más escenarios posibles.
  6. Caso específico de la IA generativa: La IA generativa puede crear automáticamente casos de prueba para una aplicación bancaria que maneja transacciones internacionales, simulando condiciones como fluctuaciones en las tasas de cambio y diferentes regulaciones fiscales. Esto mejora la capacidad de las pruebas para adaptarse a cambios rápidos y garantiza la calidad del software. 

En el mercado actual, algunas herramientas destacadas en la automatización de pruebas con inteligencia artificial (IA) incluyen Functionize, Mabl y Applitools. Asimismo, herramientas de automatización robótica de procesos (RPA), como UI-Path, han comenzado a integrar capacidades de IA generativa para pruebas automatizadas. Aunque con el auge de la IA generativa, están surgiendo cada vez más soluciones en este ámbito, esto nos plantea la necesidad de madurar, estabilizar estas tecnologías, pero sobre todo valga la redundancia, “testearlas” para confirmar su valor.

 

Discusión

 

Sin embargo, no todo es tan sencillo como parece. Estas nuevas herramientas suelen requerir licencias, a diferencia de muchos frameworks de automatización tradicionales que son de código abierto y gratuitos. Además, la generación de test cases a menudo necesitan una exploración posterior por parte del QA tester, ya que no siempre se alinean de manera uniforme con los requisitos establecidos con los clientes. Incluso en las demostraciones que presentan los proveedores de herramientas, se aconseja revisar y ajustar los casos generados.

Sobre la autoreparación, surgen preguntas clave: ¿Es siempre eficaz? ¿Puede detectar cambios sutiles, como los realizados en el CSS? ¿Es viable confiar plenamente en esta capacidad para las pruebas de regresión automatizadas, asumiendo que reparará todos los elementos que identifique como alterados? Estas limitaciones deben ser consideradas al adoptar estas tecnologías en entornos reales.

En muchos casos, estas herramientas se integran con frameworks de automatización convencionales, pero el éxito de la generación de scripts depende de que sigan correctamente sus especificaciones de código, el ejemplo más notable sería Selenium. Si la propia herramienta no traduce correctamente, será necesario revisar el código manualmente o incluso reescribir partes del mismo, lo que aumenta el esfuerzo requerido.

Más allá de los aspectos técnicos, el éxito de estas herramientas depende en gran medida de la madurez del cliente en términos de calidad del software. Es fundamental que las organizaciones alcancen un nivel mínimo de madurez en el uso de herramientas de automatización tradicionales antes de adoptar soluciones basadas en IA. Introducir estas tecnologías sin una base sólida puede complicar su implementación y limitar significativamente su efectividad. Construiremos siempre la pirámide desde su base e iremos incrementando el conocimiento según confirmemos cada etapa, asegurando así una adopción correcta de las capacidades que ofrece la IA.

 

Conclusiones

 

En resumen, adoptar la IA para la automatización de pruebas, tanto automáticas como manuales, debería ser un proceso gradual y bien argumentado. Es clave capacitar al equipo de forma continua y asegurar que las herramientas se integren bien con las plataformas que ya usamos ya sean propias de la automatización o para que se integre con el gestor de pruebas usado en la gestión de proyectos. Comprobar la efectividad de uso de las herramientas de IA para cada caso y, si no funcionan (o no lo vemos efectivo), recurrir a las herramientas tradicionales de automatización de pruebas.