Perspective

Selección y priorización automatizada de pruebas basadas en el impacto

Ajit Rajshekar,

Director Asociado - Automatización Inteligente

Las pruebas eficaces son esenciales para todo el proceso de desarrollo de software. Pero los arquitectos de pruebas y las pymes a menudo necesitan ayuda para elegir la prueba óptima para sus necesidades de regresión. 

 

Gracias a los avances tecnológicos, pueden obtener esa ayuda en una nueva solución llamada Automated Impact-Based Test Selection and Prioritization. La solución o enfoque forma parte de un concepto conocido como “automatización del ciclo de vida de las pruebas”, que reduce sustancialmente las posibilidades de que se produzcan errores humanos. Esto, a su vez, ayuda a las empresas a ofrecer aplicaciones sin errores a sus usuarios.

Escribí sobre este concepto en julio de 2021 en una entrada del blog que introdujo el concepto de automatización de pruebas de autorreparación, que utiliza algoritmos para arreglar pruebas defectuosas sin intervención humana. Un extracto:

 

En los últimos años, una idea ha ido ganando terreno en el sector de las pruebas. Mientras que las pruebas en sí están automatizadas, las actividades auxiliares que forman parte de todo el ciclo de vida de las pruebas, como el mantenimiento de los scripts, el análisis de impacto, la clasificación de los defectos, etc., siguen siendo extremadamente manuales. Depender de procesos manuales tiende a ralentizar el proceso de desarrollo de software. De ahí que ahora veamos un cambio de paradigma en la filosofía para abarcar la automatización del ciclo de vida de las pruebas y no solo la automatización de las pruebas. El auge de las técnicas de IA/ML, junto con las capacidades de programación, contribuye en gran medida a esta filosofía en desarrollo.

Por tanto, el objetivo es automatizar todo el ciclo de vida de las pruebas. Esto acelera el proceso del SDLC porque los ingenieros de automatización pueden centrarse en la creación de nuevos scripts, en la optimización de las pruebas y dedicar menos tiempo al mantenimiento de los antiguos. 

Explorar el atractivo de la selección y priorización de pruebas basadas en el impacto

Hoy investigaremos la selección y priorización de pruebas basadas en el impacto, otro engranaje de la rueda de la automatización del ciclo de vida de las pruebas que está despertando mucho interés. Esta solución de pruebas ofrece a las pymes de pruebas un mejor arsenal para limitar los errores humanos y mejorar la calidad de las aplicaciones. 

Cuando hablamos con nuestros clientes de Virtusa, nos dimos cuenta de algunos problemas evidentes: 

  • Las empresas que adoptan canalizaciones de integración/pruebas continuas siguen realizando una selección de pruebas manual y basada en el impacto. 
  • Las empresas quieren optimizar sus esfuerzos de prueba y maximizar el impacto de las pruebas en cada sprint.
  • Las empresas necesitan descubrir el código fuente no probado en cada sprint. 
  • Las partes interesadas quieren un panel de control que muestre esta información de forma automatizada. 

Vamos a profundizar en este aspecto. 

Retos actuales del equipo de automatización

Retos actuales del equipo de automatización
Retos actuales del equipo de automatización

 

Este diagrama ilustra un típico ciclo de sprint: los desarrolladores crean las características para los requisitos del sprint y los SDET (ingenieros de desarrollo de software en pruebas) crean sus guiones de prueba automatizados. Cada compilación incluye un análisis de impacto para determinar el conjunto de regresión; el conjunto de pruebas se ejecuta contra la compilación. Los defectos se registran y el backlog vuelve al siguiente sprint. 

En la actualidad, las empresas suelen ejecutar un conjunto de pruebas de regresión estándar en cada compilación. A continuación, las pymes eligen manualmente las pruebas adicionales que se añadirán al conjunto de regresión. El defecto de este enfoque es que depende de la experiencia de las pymes y no del conjunto de cambios para esa compilación.

También tiene muchos pasos manuales que hacen perder tiempo y esfuerzo en cada sprint. Y, lo que es más importante, es propenso al error humano. Por otro lado, las empresas pueden ejecutar todo el conjunto de pruebas como una regresión para estar seguros de la compilación. De nuevo, esto añade tiempo y esfuerzo a todo el proceso de pruebas.

Cómo funciona la selección y priorización de pruebas basadas en el impacto

Image
Image

 

La selección y priorización de pruebas basadas en el impacto es una solución inteligente que aprende y desarrolla una asignación de código fuente a pruebas. Este método utiliza perfiladores y aplica heurística a partir de datos históricos para generar el conjunto de pruebas basándose en los datos de commit que entran en cada compilación. 

Consta principalmente de cuatro pasos principales:

  1. Asignación del código fuente a los casos de prueba. La herramienta utiliza un agente de software durante la ejecución del caso de prueba o del script de prueba. El agente intenta asignar los casos de prueba a los archivos de código fuente, utilizando perfiladores para instrumentar el código de bytes de la aplicación y almacenarlo en un lago de datos.
  2. Heurística de priorización de pruebas. A partir de los registros históricos de ejecución de pruebas y de los registros de defectos, se aplican ciertas heurísticas de priorización de pruebas para determinar los casos de prueba más prioritarios. Se trata de un campo emergente de la ciencia de datos conocido como MSR (mining software repositories o repositorios de software de minería).
  3. Derivar los cambios de commit. Una vez generada la compilación, el agente crea una lista de todos los archivos añadidos/modificados/eliminados y la introduce en el generador del conjunto de pruebas.
  4. Generador de conjuntos de pruebas. Utilizando el conjunto de cambios generado, la herramienta intenta determinar el conjunto correcto basado en el impacto, basándose en la rotación del código y en una lista priorizada de casos de prueba utilizando datos históricos. 

Esta heurística de priorización de pruebas puede refinarse aún más para incluir ciertos algoritmos de aprendizaje reforzado (RL) para ayudar a refinar la lista priorizada de casos de prueba. Para ello, se seleccionan y priorizan los casos de prueba en función de su duración, la última ejecución anterior y el historial de fallos, bajo la dirección de una función de recompensa integrada en el algoritmo.

Principales ventajas de la selección y priorización de pruebas basadas en el impacto

Las ventajas de este proceso son sencillas: ayuda a los equipos de pruebas a seleccionar el conjunto de pruebas de regresión óptimo en función de los cambios de código. Esto, a su vez, mejora la calidad del producto y agiliza la experiencia del cliente. El enfoque del análisis de impacto basado en los datos lo hace inmune a los errores humanos, lo que permite ahorrar mucho tiempo para determinar el conjunto de pruebas de regresión. Esto es crucial para las squads que producen frecuentes compilaciones para probar. 

La automatización del ciclo de vida de las pruebas está llamada a ser una de las principales innovaciones que va a revolucionar la forma de realizar las pruebas en la próxima década. El uso de técnicas de IA/ML será un catalizador y el principal motor de crecimiento en el ámbito de las pruebas de software.

 

Ajit Rajshekar

Ajit Rajshekar

Director Asociado - Automatización Inteligente

Ajit Rajshekar es un arquitecto de pruebas con más de 15 años de experiencia en ingeniería de calidad, principalmente en el ámbito de la ingeniería de productos (dispositivos médicos). Sus intereses incluyen la exploración y el uso de nuevas metodologías/herramientas en la automatización de pruebas y la inteligencia cognitiva (AI/ML) en las pruebas.

Acelere su tiempo de comercialización con la automatización inteligente

 

La automatización inteligente de Virtusa ayuda a impulsar la transformación del SDLC

Contenido relacionado