Llegamos a ustedes gracias a:



Columnas de opinión

3 formas de utilizar datos, analítica y ML en la automatización de pruebas

Por: Isaac Sacolick, presidente de StarCIO

[11/11/2021] Hace apenas 10 años, la mayoría de las estrategias de prueba de desarrollo de aplicaciones se centraban en pruebas unitarias para validar la lógica de negocios, casos de prueba manuales para certificar las experiencias del usuario, y secuencias de comandos de prueba de carga independientes para confirmar el rendimiento y la escalabilidad. El desarrollo y la publicación de funciones fueron relativamente lentos en comparación con las capacidades de desarrollo actuales basadas en infraestructura de nube, arquitecturas de microservicios, automatización de la integración continua y la entrega continua (CI/CD) y capacidades de prueba continua.

[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]

Además, muchas aplicaciones se desarrollan hoy mediante la configuración de software como servicio (SaaS), o la creación de aplicaciones de código bajo y sin código que también requieren probar los flujos y procesos de negocio subyacentes.

Los equipos de desarrollo ágiles en las organizaciones de DevOps tienen como objetivo reducir el tiempo del ciclo de las funciones, aumentar las frecuencias de entrega y garantizar experiencias de usuario de alta calidad. La pregunta es, ¿cómo pueden reducir los riesgos y movilizar hacia la izquierda las pruebas sin crear nuevas complejidades de prueba, cuellos de botella en la implementación, brechas de seguridad o aumentos significativos de costos?

Esko Hannula, gerente de línea de productos de Copado, me habló sobre la reciente adquisición de Qentinel y los desafíos de prueba que enfrentan las organizaciones DevOps. Él cree que el aprendizaje automático es clave para manejar los crecientes volúmenes de pruebas. "La calidad del negocio digital es la calidad del código y las pruebas que lo ejecutan. Cuanto más código haya para probar, más importante será combinar el aprendizaje automático con la automatización de pruebas. Las personas de control de calidad y la inteligencia artificial pueden apoyarse mutuamente para tomar decisiones acertadas, basadas en datos, en lugar de un simple presentimiento.

Recientemente escribí sobre el uso de la virtualización de servicios para desarrollar pruebas de servicios web más sólidas al crear microservicios o interactuar con muchas API de terceros. Luego miré un paso más allá e investigué las capacidades de prueba basadas en datos, analítica y aprendizaje automático que los equipos de desarrollo y los ingenieros de automatización de pruebas de control de calidad pueden aprovechar para desarrollar y soportar pruebas más sólidas.

Estas capacidades están surgiendo, y algunas plataformas de prueba ofrecen una funcionalidad sólida en la actualidad, mientras que otras se encuentran en las primeras fases de adopción. Los equipos de desarrollo deben investigar y planificar estas funciones de prueba, ya que todas se convertirán en capacidades principales.

Generación de pruebas usando procesamiento de lenguaje natural

La calidad de las pruebas ha mejorado significativamente durante la última década, a medida que las plataformas de control de calidad analizan el modelo de objetos de documento (DOM, por sus siglas en inglés) de una página web, aprovechan la visión por computadora para detectar cambios en la interfaz de usuario y utilizan el reconocimiento óptico de caracteres para extraer elementos de texto. Pero el desarrollo de pruebas a menudo requiere que los ingenieros de pruebas hagan clic manualmente en las interfaces de usuario, ingresen 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 casos de prueba. Sauce Labs adquirió recientemente AutonomIQ, una herramienta que permite a los usuarios describir los pasos de prueba en lenguaje natural y luego, automáticamente, su software crea los casos de prueba.

John Kelly, director de tecnología 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 relaciones con los clientes, flujos de trabajo de gestión de procesos comerciales y aplicaciones de código bajo. Describe la experiencia desde una perspectiva de negocios: "Tengo procesos de negocio internos que los expertos en la materia pueden describir en lenguaje natural, que el aprendizaje automático de NLP puede convertir en casos de prueba que pueden ejecutarse con la frecuencia deseada. Entonces puedo demostrar a los auditores externos que los controles se siguen correctamente. Por lo tanto, el enfoque sin código para crear casos de prueba es una forma emergente de documentar y validar los procesos de negocios.

Ampliación de pruebas con generación de datos de prueba sintéticos

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 de negocios subyacentes y las condiciones límite. La generación de datos de prueba puede ser particularmente desafiante para experiencias abiertas como las de los motores de búsqueda, formularios complicados de múltiples campos, carga de documentos y pruebas con información de identificación personal u otros datos confidenciales.

Herramientas de Curiosity Software, Datprof, Delphix, GenRocket, Torana (iCEDQ), K2View y otros proporcionan capacidades de automatización de datos de prueba para diferentes aplicaciones y flujos de datos, incluidas pruebas funcionales, pruebas API, dataops, lagos de datos e inteligencia de negocios.

Optimización de las prácticas de prueba continuas

Varias plataformas buscan ayudar a los equipos de desarrollo ágiles y a los ingenieros de automatización de control de calidad a optimizar sus prácticas de prueba.

El análisis de fallas ayuda a los equipos de desarrollo a investigar las causas fundamentales cuando fallan las pruebas. Kelly describe el desafío: "usted tiene mil pruebas de silicio, las ejecuta todas y obtiene 300 fallas. El equipo no sabe si es una API que no está funcionando bien o algo más y si el problema ocurrirá en producción, sabiendo que el ambiente de prueba no lo refleja completamente. Están interesados en las causas fundamentales de las fallas en las pruebas. Nuestros modelos agrupan las pruebas fallidas e informan qué pruebas están relacionadas con el mismo problema.

Otro desafío es optimizar el conjunto de pruebas y determinar qué pruebas ejecutar en función de los cambios de código de una versión. Los equipos de prueba pueden diseñar heurísticamente una "prueba de humo, una prueba de regresión en torno a las funcionalidades y flujos esenciales de la aplicación. Pero, para los equipos de DevOps 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 aprendizaje automático para elegir qué pruebas ejecutar. La optimización de las pruebas en una compilación es una capacidad muy necesaria para los equipos de desarrollo que publican código frecuentemente en aplicaciones críticas.

Una solución dirigida a este desafío es YourBase, que crea un gráfico de dependencia que mapea los casos de prueba con sus rutas de código. Cuando los desarrolladores cambian el código, la herramienta usa el gráfico de dependencia para optimizar qué casos de prueba deben ejecutarse. Yves Junqueira, CEO de YourBase, comentó: "vemos empresas que tienen decenas o incluso cientos de miles de pruebas. Quieren mejorar su tiempo de entrega 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 las fallas de las pruebas.

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

La clave para las organizaciones de DevOps es reconocer que impulsar lanzamientos frecuentes en aplicaciones muy críticas requiere de 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 soportar microservicios y dependencias de aplicaciones complejas al centralizar los datos operativos y habilitar las capacidades de aprendizaje automático. De manera similar, las plataformas de control de calidad tienen como objetivo proporcionar capacidades de automatización, analítica, NLP y aprendizaje automático a los equipos de desarrollo ágiles para mejorar las pruebas.

Isaac Sacolick es el autor de Driving Digital: The Leader's Guide to Business Transformation through Technology, que cubre muchas prácticas como la metodología ágil, devops y ciencia de datos que son fundamentales para los programas exitosos de transformación digital. Sacolick es un reconocido CIO social, bloguero desde hace mucho tiempo en Social, Agile and Transformation y CIO.com, también es presidente de StarCIO.