Software
Desarrollo
DevOps
Testing

Tres formas de utilizar datos, análisis y 'machine learning' en la automatización de pruebas de software

Realizar mejores pruebas se traduce en tener un software también mejor. El uso de PNL, la generación de datos de prueba y la optimización del 'testing' pueden perfeccionar las aplicaciones.

Desarrollo, software
Créditos: Christina Wocintechchat (Unsplash).

Hace apenas 10 años, la mayoría de las estrategias de pruebas de desarrollo de aplicaciones se centraban en los test runitarios para validar la lógica de negocio, los casos de prueba manuales para certificar las experiencias de los usuarios y los scripts de pruebas de carga independientes para confirmar el rendimiento y la escalabilidad. El desarrollo y la publicación de funciones eran relativamente lentos en comparación con las capacidades de desarrollo actuales, basadas en la infraestructura de la nube, las arquitecturas de microservicios, las automatizaciones de integración continua y entrega continua (CI/CD) y la calidad del testing continuo.

Además, muchas aplicaciones se desarrollan hoy en día configurando software como servicio (SaaS) o construyendo aplicaciones de bajo código y sin código que también requieren probar los flujos y procesos de negocio subyacentes.

Los equipos de devops, de desarrollo ágil en las organizaciones, tienen como objetivo reducir el tiempo del ciclo de las funcionalidades, aumentar las frecuencias de entrega y garantizar experiencias de usuario de alta calidad. La pregunta es: ¿cómo pueden reducir los riesgos y las pruebas de desplazamiento sin crear nuevas complejidades de pruebas, cuellos de botella en el despliegue, lagunas de seguridad o aumentos significativos de los costes?

Esko Hannula, director de la línea de productos de Copado, explica los retos en materia de testing a los que se enfrentan las organizaciones de desarrollo. Cree que el aprendizaje automático es la clave para manejar los crecientes volúmenes de pruebas. "La calidad del negocio digital se debe a la calidad del código y de las pruebas que lo ejecutan. Cuanto más código hay que probar, más importante es combinar el aprendizaje automático con la automatización de pruebas. Los profesionales de calidad y de machine learning pueden apoyarse mutuamente en la toma de decisiones".

Los equipos de desarrollo y los ingenieros de automatización de pruebas de control de calidad pueden aprovechar las capacidades de prueba basadas en datos, análisis y aprendizaje automático para desarrollar y apoyar pruebas más sólidas. 

 

Generación de pruebas mediante el procesamiento del lenguaje natural

La calidad de las pruebas ha mejorado significativamente durante la última década, ya que las plataformas de control de calidad analizan el modelo de objetos del documento (DOM) de una página web, aprovechan la visión por ordenador para detectar cambios en la interfaz del usuario y utilizan el reconocimiento óptico de caracteres para extraer elementos de texto. Sin embargo, el desarrollo de pruebas a menudo requiere que los ingenieros de pruebas hagan clic en las interfaces de usuario manualmente, introduzcan datos en formularios y naveguen por los flujos de trabajo mientras las plataformas de control de calidad registran el caso de prueba.

Un enfoque emergente es utilizar el procesamiento del lenguaje natural (NLP) para documentar los casos de prueba. Sauce Labs ha adquirido recientemente AutonomIQ, una herramienta que permite a los usuarios describir los pasos de las pruebas en lenguaje natural y luego su software crea automáticamente los casos de prueba.

John Kelly, CTO de Sauce Labs, describe por qué esta capacidad es importante a medida que más organizaciones desarrollan la personalización de la gestión de las relaciones con los clientes, los flujos de trabajo de la gestión de los procesos empresariales y las aplicaciones de bajo código. Describe la experiencia desde una perspectiva empresarial: "Tengo procesos empresariales internos que los expertos en la materia pueden describir en lenguaje natural, que el aprendizaje automático de PNL puede convertir en casos de prueba que pueden ejecutarse con la frecuencia deseada. Así puedo demostrar a los auditores externos que los controles se siguen correctamente". Así pues, un enfoque sin código para crear casos de prueba es una forma emergente de documentar y validar los procesos empresariales.

 

Ampliar las pruebas con la generación de datos de 'testing' artificiales

Una vez que los ingenieros de control de calidad capturan los casos de prueba, la siguiente tarea es generar suficientes datos de prueba para validar las reglas empresariales subyacentes y las condiciones límite. La generación de datos de prueba puede ser especialmente difícil en el caso de experiencias abiertas como motores de búsqueda, formularios complicados de varios campos, cargas de documentos y pruebas con información de identificación personal u otros datos sensibles.

Las herramientas de Curiosity Software, Datprof, Delphix, GenRocket, Torana (iCEDQ), K2View y otras proporcionan capacidades de automatización de datos de prueba para diferentes aplicaciones y flujos de datos, incluidas las pruebas funcionales, las pruebas de API, los dataops, los lagos de datos y la inteligencia empresarial.

 

Optimización de las técnicas de evaluación continua

Hay varias plataformas que ayudan a los equipos de desarrollo ágil y a los ingenieros de automatización de control de calidad a optimizar sus prácticas de pruebas. El análisis de fallos ayuda a los equipos de desarrollo a investigar las causas raíz cuando las pruebas no funcionan. Kelly describe el reto: "Tienes mil pruebas de selenio, las ejecutas todas y obtienes 300 fallos. El equipo no sabe si se trata de una API rota o de otra cosa y si el problema se producirá en producción, sabiendo que el entorno de pruebas no lo refleja totalmente. Están interesados en las causas raíz de los fallos de las pruebas. Nuestros modelos cohesionan las pruebas fallidas e informan de qué pruebas están relacionadas con el mismo problema".

Otro reto es la optimización del conjunto de pruebas y la determinación de los test que deben ejecutarse en función de los cambios de código de una versión. Los equipos de pruebas pueden diseñar de forma heurística una "prueba de humo", un test de regresión en torno a las funcionalidades y los flujos esenciales de la aplicación. Pero para los equipos de desarrollo que implementan pruebas continuas, existe la oportunidad de conectar los datos entre las pruebas, los cambios de código y los sistemas de producción y aplicar el aprendizaje automático para elegir qué pruebas ejecutar. La optimización de las pruebas en una compilación es una funcionalidad muy necesaria para los equipos de desarrollo que liberan código con frecuencia en aplicaciones de misión crítica.

Una solución para este reto es YourBase, que crea un gráfico de dependencias que mapea los casos de prueba con sus rutas de código. Cuando los desarrolladores cambian el código, la herramienta utiliza el gráfico de dependencias para optimizar los casos de prueba que deben ejecutarse. Según Yves Junqueira, director general de YourBase: "Vemos empresas que tienen decenas o incluso cientos de miles de pruebas. Quieren mejorar su tiempo de espera para llevar el código a producción y mejorar la productividad de los desarrolladores. Estos equipos deben tomar decisiones inteligentes sobre qué pruebas son realmente necesarias para sus cambios y quieren una mejor comprensión de los fallos de las pruebas".

Un tercer enfoque opera fuera del entorno de pruebas y ayuda a los ingenieros de dispositivos y desarrolladores de software a rastrear los errores de producción, las excepciones y los eventos críticos. Backtrace proporciona esta capacidad. Los equipos de desarrollo utilizan sus informes de errores agregados y sus análisis de deduplicación para encontrar y resolver rápidamente los problemas en las aplicaciones de juegos, móviles u otras aplicaciones integradas.

La clave para las organizaciones de devops es reconocer que impulsar lanzamientos frecuentes en aplicaciones más críticas requiere un esfuerzo paralelo para aumentar la automatización, la solidez y la inteligencia en las pruebas. Las plataformas AIops ayudan a los equipos de gestión de servicios de TI a dar soporte a los microservicios y a las complejas dependencias de las aplicaciones mediante la centralización de los datos operativos y la habilitación de capacidades de aprendizaje automático. De manera similar, las plataformas de QA tienen como objetivo proporcionar a los equipos de desarrollo ágil capacidades de automatización, análisis, PNL y aprendizaje automático para mejorar las pruebas.

 


TE PUEDE INTERESAR...

Contenido Patrocinado

Forma parte de nuestra comunidad

 

¿Te interesan nuestras conferencias?

 

 
Cobertura de nuestros encuentros
 
 
 
 
Lee aquí nuestra revista de canal

DealerWorld Digital