Uso de Machine Learning para la selección de casos de prueba en regresion de testing software
Hoy quiero compartirles mi análisis de un artículo académico llamado "Test Case Selection through Novel Methodologies for Software Application Developments" que pueden acceder aquí.
Publicado por los autores:
- Dr K R Sekar, Sastra university
- G. Sathiamoorthy, Sastra deemed to be university
- El-Sayed M. El-kenawy, Delta higher institute of engineering & technology
Los autores analizan cómo el uso de machine learning puede optimizar la selección de casos de prueba en regresión, el desafío para los tester es seleccionar el subconjunto de casos de prueba que detecte la mayor cantidad de errores en el menor tiempo posible.
Los autores proponen un modelo que llaman SCARF-RT
Similarity coefficient
Creating Acronyms
Regression test
and Fuzzy set
with Dataset
y otras metodologías que utilizan una combinación de clustering basado en coeficientes de similitud y ranking.
El estudio considera 11 características de los casos de prueba valoradas por expertos para el agrupamiento de los casos de prueba, y evalúa dos metodologías diferentes para saber cuál es mejor para seleccionar los CP en regresión.
a. Metodología 1 --> Clasificación con enfoque en ranking, agrupa los CP basándose en su ranking y la cobertura de características. A cada fila-columna se le asigna un peso binario para determinar el peso total y luego ordenarlo.
b. Metodología 2 --> Clasificación por coeficiente de similitud difusa, calculando la similitud entre los CP usando las 11 características y formando clusters de CP similares. Se usa la composición Maxmin para encontrar equivalencias difusas y hacer el agrupamiento.
-----------------------------------------------------------------------
ALERTA DE SPOILER...
si no quieres saber qué metodología es mejor hasta el final, saltate esta sección
Les adelanto el resultado (Spoiler) este estudio encontró que ambas metodologías son eficientes para la detección de bugs y reducción de casos de prueba, con la segunda metodología logrando un porcentaje de reducción en la selección de casos de prueba mayor con una cobertura total de las características.
El estudio afirma que con esta metodología se puede entender la cantidad de casos de prueba necesarios para probar el verdadero objetivo de una aplicación de software en pruebas de regresión,
-----------------------------------------------------------------------
A continuación intentaré explicar en mis propias palabras y con mis observaciones el experimento que los investigadores llevaron a cabo (por eso la letra AZUL :) )
Recuerda que esta predicción es porque ya has realizado como mínimo 1 ciclo de pruebas y tienes información no sólo del diseño de tus casos de prueba, sino también de los bugs detectados durante las pruebas ejecutadas.
Los investigadores eligieron las siguientes características como influyentes para la predicción:
C1 - Bugs críticos descubiertos durante el testing
C2 - Cobertura de requerimientos, qué tanto el CP los cubre
C3 - El tiempo que requiere ejecutar el CP
C4 - LOC líneas de código cubiertas por el CP
C5 - Total de bugs detectados
C6 - Longitud promedio de pasos de prueba, validaciones de campos de entrada o condiciones cubiertas en el CP
C7 - Requerimientos críticos cubiertos, es parecida a C2, pero esta característica se enfoca sólo en los críticos.
C8 - Prioridad del CP basada en las perspectiva del cliente
C9 - Propensión a fallas, basados en el primer ciclo de pruebas
C10 - Volatilidad de los requerimientos, es decir la frecuencia de cambios en los requerimientos para este CP durante el proceso de pruebas.
C11 - Complejidad del desarrollo
Hablando a calzón quitado, estas características en la teoría cubren bien lo que puede afectar la predicción de ocurrencia de bugs; sin embargo creo que en empresas grandes como bancos que subcontratan con casas de software el desarrollo y con otros proveedores el software testing, puede llegar a ser más complejo de implementar porque interactúan más actores cada uno con sus propios sistemas y reunir y llegar al detalle de información por ejemplo de la C4 cantidad de líneas cubiertas por el CP podría ser muy muy difícil.... cada quien que tome del esquema propuesto y adecúe a su situación particular, sigamos que vamos bien!
Se decide que cualquier usar un umbral de 3 donde cualquier valor encima de 3 se asignará 1 y cualquier otro valor se asignará 0, esto para facilitarle al algoritmo de ML clasificar cuando es "bueno" o "malo" un CP.
Paso 3
Calcular el peso y ordenar las filas en base a él, es decir sumar el total de "puntos" de la fila, esto nos permitirá totalizar por cada caso de prueba cuántos puntos tiene, agregando esta columna al final. Y repitiendo el mismo proceso para cada columna:
Paso 3
Conversión a relación de equivalencia difusa, los valores de similitud calculados forman una relación de tolerancia difusa, para poder formar clústers esta relación debe convertirse en una relación pero de equivalencia difusa, que satisface estas condiciones:
- Reflexividad. Todo caso de prueba es completamente similar a sí mismo. Ej la similitud de TC1 consigo mismo es 1
- Simetría. La similitud entre el caso de prueba TCi y TCj es la misma que la similitud entre TCj y TCi.
- Transitividad. Si TCi es similar a TCj y TCj es similar a TCk, entonces TCi es similar a TCk. La transitividad se logra aplicando repetidamente la composición max-min a la matriz de similitud hasta que se estabiliza.
:: CONCLUSIÓN METODOLOGÍA 2 ::