header_lecciones_v5

Cómo aplicar pruebas automatizadas usando Inteligencia Artificial

por Boris Andrés Vélez, el 9 de marzo de 2020

Cómo aplicar pruebas automatizadas usando Inteligencia Artificial

Las pruebas automatizadas se implementaron para evaluar que los requerimientos y la funcionalidad del software cumplieran con las necesidades del cliente.

La forma en la que se desarrollan los proyectos ha cambiado, en la actualidad se utilizan metodologías como Agile, DevOps y otros, cambiando la forma en la que se enfoca el control de calidad y haciéndolas más creativas y flexible.

Una de las últimas tecnologías propuestas para hacer pruebas automatizadas son la Inteligencia Artificial (IA) y el Machine Learning (aprendizaje automático - ML) aún en desarrollo. Sin embargo, para algunos estas tecnologías no aseguran que los resultados obtenidos sean efectivos.

Ahora, examinaremos los tipos de pruebas de software automatizadas y basadas en AI y ML para determinar dónde encajan en el marco tecnológico de las pruebas y su desafío al adoptarlas.

Un QA Engineer debe tener en cuenta las dificultades que se presentan como:

  • Tiempo: Para una correcta ejecución de pruebas automatizadas el QA Engineer debe mantener las pruebas ajustadas, esto se complica con el tiempo debido a la acumulacion de nuevas funcionalidades y deudas técnicas. 
  • Ausencia de bugs: Las pruebas automatizadas pueden ejecutarse con éxito pero también pueden fallar cuando se detectan errores en el código en funciones recientemente agregadas. Generalmente esto requiere de pruebas manuales lo que siempre es posible si se cuenta con el personal necesario.

  • Casos de prueba: Al diseñar casos de prueba a largo plazo se producen errores al momento de definir los pasos para ejecutar los escenarios debido a los posibles cambios que surjan en el desarrollo de cada sprint, para ello es necesario mejorar la definición de los pasos y ejecutar de nuevo.
  • Pruebas de interfaz de usuario (UI): Estas requieren de ejecución manual, aunque las tecnologías de IA y ML pueden aliviar un poco esta carga de pruebas automatizadas.

Algunas aplicaciones que usan IA

Podemos evidenciar la inteligencia artificial en aplicaciones que son utilizadas en la cotidianidad como lo son:

  1. Siri: Apple
  2. Alexa: Amazon
  3. Reconocimiento de imágenes: Facebook
  4. Búsquedas: Google
  5. Identificador de rutas: Waze

Programación Tradicional vs Machine Learning

La programación tradicional consta de 3 pasos en el siguiente orden:

  1. Datos de entrada
  2. Reglas computacionales
  3. Salidas

Aquí se requiere de los datos de entrada para que las reglas computacionales los procesen y así obtener una salida, finalizando aquí el flujo.

En Machine Learning consta de los mismos tres componentes pero con diferente distribución:

  1. Datos de entrada
  2. Reglas computacionales
  3. Salidas
  4. Reglas computacionales

En este caso los datos de entrada son procesados por las reglas computacionales obteniendo una salida, pero esta salida también es procesada y analizada por las reglas computacionales permitiendo a la máquina aprender de un flujo establecido de datos el resultado.

Con este modelo el QA Engineer puede tener el mismo proceso de diseño de casos de prueba o Features, establecer sus pasos para la ejecución e ingresarlos en la máquina para que este los ejecute, los analice, aprenda de ellos y basado en las predicciones se puedan tomar acciones, todo esto de forma autómata.

El proceso que realiza la máquina para tomar los datos, procesarlos, aprender de ellos y entregar como resultado unas predicciones se cataloga en las siguientes fases:

Fase Learning:

  1. Datos de entrenamiento
  2. Vector de features
  3. Algoritmo
  4. Modelo

Pruebas automatizadas Fase Learning

Fase Inferencia:

  1. Datos de prueba
  2. Vector de features
  3. Modelo
  4. Predicción

Pruebas automatizadas Fase Inferencia

De esta forma se mitigan algunas de las dificultades al realizar pruebas automatizadas por el QA Engineer como lo son:

  1. Tiempo: En inicio mientras se refina el algoritmo tomará tiempo ajustarlo hasta que realice lo que en realidad se requiere, luego será todo un proceso autónomo. 
  2. Ausencia de bugs: Los resultados y las predicciones informaran si existe un error en código o es una nueva funcionalidad.
  3. Casos de prueba: No será necesario diseñar un caso de prueba con un paso a paso para su ejecución bastará con definir una feature y con base en eso codificar la máquina para que haga el proceso de aprendizaje y predicciones a futuro.
  4. Pruebas de interfaz de usuario (UI): Es posible entrenar la máquina para que detecte un cambio en la interfaz de usuario.

El proceso general implementado para entrenar a la máquina se distribuye en 9 etapas, estas pueden ser adaptadas por el QA Engineer para el proceso de automatización de pruebas.

  1. Establecer una pregunta
  2. Colectar datos
  3. Visualizar los datos
  4. Obtener feedback
  5. Probar el algoritmo
  6. Entrenar el algoritmo
  7. Refinar el algoritmo
  8. Repetir las etapas 4 a 7 las veces que sean necesarias
  9. Utilizar el modelo para hacer predicciones

Testing con Machine Learning (ML)

Antes de aplicar ML se debe tener en cuenta lo siguiente:

  1. Datos: Los datos a utilizar deben tener una caracterización previa, un análisis, un pre ordenamiento y limpieza.
  2. Confiabilidad: Los datos a utilizar deben ser verídicos y confiables.
  3. Priorización: Se definen cuáles son los casos que deben ejecutarse en primera instancia, teniendo en cuenta los requisitos y los pre requisitos.

Pruebas de caja blanca

Una vez cumplidos los pasos anteriores se define:

  1. Base: Es el uso de meta-data y las descripciones de los casos de prueba en lenguaje natural.
  2. Se define el tipo de aprendizaje que puede ser:
    2.1 Aprendizaje con supervisión: se priorizan los casos de prueba, se utiliza un algoritmo llamado ranked vector machine (SVM rank) - ranking, este algoritmo los clasifica en binarios o en decimales.
  3. K-Nearest Neighbor (KNN)
  4. Regresión lineal
  5. Redes neuronales

Árboles de decisión

Para este escenario ejemplo se define un inicio de sesión. Se implementa un árbol de decisiones, en lenguaje de testing esto sería equivalente a un flujo básico y un flujo alterno.

Testing con Machine Learning árbol de decisión

Testing con Machine Learning

Pruebas de interfaz gráfica

Con ML no es necesario identificar de antemano todos los problemas, ya que es posible enseñar al algoritmo a la identificación de patrones en las pantallas.

Pruebas automatizadas de interfaz gráfica

Para estos casos se usa el lenguaje natural para la especificación de los casos de prueba, es decir, la forma para automatizar las pruebas comúnmente requiere de los selectores y de las APIS para programar, con ML se utiliza un lenguaje más común para cualquier persona; por ejemplo, el actor se llamará Pinocho y le diremos que ingrese al campo nombre de usuario e ingrese el nombre de “José”, que busque y haga clic en el botón con el nombre guardar.

Pruebas de interfaz gráfica con inteligencia artificial

 

Nuevo llamado a la acción

Temas:Desarrollo de Software

Lecciones Pragma

Lecciones en Academia Pragma

Aquí encontrarás tutoriales técnicos para que apliques en temas de desarrollo de software, cloud, calidad en software y aplicaciones móviles. 

También puedes visitar nuestro Blog con contenido actual sobre Transformación Digital, Marketing, Conocimiento de Usuario y más. 

Blog

Suscríbete a la academia

Descarga la Guía para trabajar con ambientes IBM Websphere Portal