Expositor: Juliana Herbert
Duración: 2 horas
Resumen: Como efecto colateral de la realización del testing de software, tenemos la generación de una gran cantidad de datos. Estos datos están relacionados a información sobre el código del software, sobre el perfil de los desarrolladores, sobre la complejidad del sistema y del dominio, además de la identificación de tendencias de tipos de defectos.
Con el uso de machine learning, es posible hacer que la computadora defina correlaciones entre los datos, de forma de generar un algoritmo. En el contexto del testing, ese algoritmo puede seleccionar casos de prueba con más alta probabilidad de identificar defectos.
Durante el taller veremos conceptos básicos de machine learning y ejemplos prácticos de cómo esos conceptos pueden ser utilizados para analizar y clasificar casos de prueba, de acuerdo a objetivos específicos predefinidos. Con la clasificación, es posible no sólo seleccionar los casos de prueba que tienen más alta probabilidad de identificar defectos, sino también los que estén relacionados a riesgos con grado más alto de exposición. Veremos ejemplos de aplicaciones del área de la salud para ver en un contexto real los conceptos presentados durante el taller.
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Taller TestingUy 2019 - Machine learning para refinar el testing de software
1. @herbert_juliana | #testinguy
TALLER
Juliana Herbert
julianash@ufcspa.edu.br
@herbert_juliana
13 y 14 de mayo, 2019
testinguy.org
@testinguy | #testinguy
MACHINE LEARNING
PARA REFINAR EL
TESTING DE
SOFTWARE
2. @herbert_juliana | #testinguy
PresentaciónPresentaciónPresentaciónPresentación
• Soy profesora en la Universidade Federal de Ciências da Saúde de Porto
Alegre (UFCSPA) - https://www.ufcspa.edu.br/ - en el área de Informática
Biomédica.
• También soy investigadora asociada de PEDECIBA-Informática, en UdelaR.
• Trabajo con testing de software desde 1991.
• Mis tesis de maestría y de doctorado fueron sobre testing de software.
• Uso el machine learning como herramienta para mejorar mi proceso de
testing.
7. @herbert_juliana | #testinguy
Datos GeneradosDatos GeneradosDatos GeneradosDatos Generados
por el Testingpor el Testingpor el Testingpor el Testing
DATOS
SOBRE…
El código del
software.
El perfil de
las
personas.
La
complejidad
del sistema.
La
complejidad
del dominio.
Tendencias
de tipos de
defectos.
8. @herbert_juliana | #testinguy
DesafíosDesafíosDesafíosDesafíos
• Utilizar de la mejor forma posible los datos generados por el testing.
• Generar casos de testing que tengan más probabilidad de encontrar
defectos.
• ¡Hacer todo considerando las restricciones comunes de tiempo,
presupuesto y de recursos que tenemos en el testing!
10. @herbert_juliana | #testinguy
Inteligencia ArtificialInteligencia ArtificialInteligencia ArtificialInteligencia Artificial
• Capacidad de las máquinas de “resolver los tipos de problemas que
hoy son reservados para los seres humanos” – John McCarthy, 1956.
11. @herbert_juliana | #testinguy
Inteligencia ArtificialInteligencia ArtificialInteligencia ArtificialInteligencia Artificial
Modelos de Datos
Poder de
Procesamiento
Big Data
IA
12. @herbert_juliana | #testinguy
Inteligencia ArtificialInteligencia ArtificialInteligencia ArtificialInteligencia Artificial ---- Algunos Ejemplos ConocidosAlgunos Ejemplos ConocidosAlgunos Ejemplos ConocidosAlgunos Ejemplos Conocidos
Siri.
Amazon Alexa.
Reconocimiento de imágenes de Facebook.
Búsquedas en Google.
Identificación de rutas por Waze.
17. @herbert_juliana | #testinguy
Proceso GeneralProceso GeneralProceso GeneralProceso General
1 - Definir una
pregunta.
2 - Colectar
datos.
3 - Visualizar
datos.
6 - Entrenar el
algoritmo.
5 - Probar el
algoritmo.
4 - Colectar
feedback.
7 - Refinar el
algoritmo.
8 - Repetir las
etapas 4 a 7 hasta
que sea
necesario.
9 - Usar el
modelo para
hacer
predicciones.
18. @herbert_juliana | #testinguy
Tipos de MachineTipos de MachineTipos de MachineTipos de Machine LearningLearningLearningLearning
Fuente: https://www.guru99.com/machine-learning-tutorial.html
19. @herbert_juliana | #testinguy
Aprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con Supervisión
• El algoritmo usa datos de entrenamiento y de feedback de personas
para aprender la relación entre datos de entrada y datos de salida.
Regresión – cuando las
características son
continuas.
Clasificación – cuando
las características son
discretas.
20. @herbert_juliana | #testinguy
Aprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con Supervisión ---- ClasificaciónClasificaciónClasificaciónClasificación
• Genero del Cliente
• Altura
• Peso
• Sueldo
• Productos Comprados
• Hora de la Compra
Identificación de la
probabilidad de
genero del cliente,
con base en esos
datos.
21. @herbert_juliana | #testinguy
Aprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con Supervisión ---- ClasificaciónClasificaciónClasificaciónClasificación
• Caso de Testing
• Defectos Identificados
• Complejidad en Ejecución
• Tipo de Sistema
• Calidad del Proceso de Desarrollo
• Uso de Herramienta de Testing
Caso de Testing
priorizado
con relación a la
probabilidad
de identificación de
defectos.
22. @herbert_juliana | #testinguy
Aprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con Supervisión
• Ejemplo de técnica: árboles de decisión:
23. @herbert_juliana | #testinguy
Aprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con SupervisiónAprendizaje con Supervisión ---- RegresiónRegresiónRegresiónRegresión
• Regresión lineal:
24. @herbert_juliana | #testinguy
Aprendizaje sin SupervisiónAprendizaje sin SupervisiónAprendizaje sin SupervisiónAprendizaje sin Supervisión
• Usada cuando es necesario identificar padrones para la clasificación
de los datos.
• No hay relaciones anteriores explícitas entre las variables.
• Identificación de clusters.
25. @herbert_juliana | #testinguy
Aprendizaje sin SupervisiónAprendizaje sin SupervisiónAprendizaje sin SupervisiónAprendizaje sin Supervisión
• Similitud
• Medida numérica de semejanza entre objetos.
• Valor alto para objetos parecidos.
• A menudo definida en el intervalo [0,1].
• Disimilitud
• Medida numérica de diferencia entre objetos.
• Valor bajo para objetos parecidos.
• Varia entre [0, ∞).
• Usualmente es una distancia.
• Proximidad
• Se refiere a similitud o disimilitud.
26. @herbert_juliana | #testinguy
Aprendizaje sin SupervisiónAprendizaje sin SupervisiónAprendizaje sin SupervisiónAprendizaje sin Supervisión ---- RegresiónRegresiónRegresiónRegresión
• Regresión lineal:
27. @herbert_juliana | #testinguy
Sin embargo, hay que tenerSin embargo, hay que tenerSin embargo, hay que tenerSin embargo, hay que tener
algunos cuidados muyalgunos cuidados muyalgunos cuidados muyalgunos cuidados muy
importantes...importantes...importantes...importantes...
28. @herbert_juliana | #testinguy
Cuidados antes de aplicarCuidados antes de aplicarCuidados antes de aplicarCuidados antes de aplicar
MachineMachineMachineMachine LearningLearningLearningLearning
• Preparación de los datos:
• Caracterización.
• Análisis.
• Preprocesamiento:
• Equilibrio.
• Limpieza.
• Transformaciones.
• Confiabilidad de los datos.
• Eliminación de cualquier parcialidad (bias).
30. @herbert_juliana | #testinguy
Machine Learning em el TestingMachine Learning em el TestingMachine Learning em el TestingMachine Learning em el Testing
31. @herbert_juliana | #testinguy
Caso 1Caso 1Caso 1Caso 1 –––– MLMLMLML enenenen elelelel TestingTestingTestingTesting
• Testing de caja negra.
• Priorización de casos de testing de regresión para probar sistemas.
• Escenario:
• requisitos y casos de testing especificados en lenguaje natural;
• sin acceso al código fuente;
• sin automación del testing.
32. @herbert_juliana | #testinguy
Caso 1Caso 1Caso 1Caso 1 –––– MLMLMLML enenenen elelelel TestingTestingTestingTesting
• Base: uso de meta-datos y de descripciones de casos de testing en
lenguaje natural.
• Aprendizaje con supervisión.
• Algoritmo: ranked vector machine (SVM rank) – ranking de acuerdo con la
prioridad de los casos de testing.
Clasificación Binaria Clasificación Ranked
33. @herbert_juliana | #testinguy
Caso 1Caso 1Caso 1Caso 1 –––– MLMLMLML enenenen elelelel TestingTestingTestingTesting
• Aprendizaje con supervisión.
• Algoritmo: ranked vector machine (SVM
rank) – ranking de acuerdo con la
prioridad de los casos de testing.
34. @herbert_juliana | #testinguy
Caso 1Caso 1Caso 1Caso 1 –––– MLMLMLML enenenen elelelel TestingTestingTestingTesting
• Learning & Clasification:
• Transformación de los datos en vectores
de características (features vector).
• Datos discretos → diretos.
• Lenguaje natural – preprocesamiento
con el uso de un diccionario.
35. @herbert_juliana | #testinguy
Caso 1Caso 1Caso 1Caso 1 –––– MLMLMLML enenenen elelelel TestingTestingTestingTesting
• Vectores de características (features vector):
• Palabras del diccionario, describiendo el caso de testing.
• Requisitos relacionados al caso de testing (0 o 1);
• Fallos:
• Número de fallos relacionados al caso;
• Severidad de los fallos (soma);
• Age of failures (fallos ya identificados anteriormente).
36. @herbert_juliana | #testinguy
Caso 1Caso 1Caso 1Caso 1 –––– MLMLMLML enenenen elelelel TestingTestingTestingTesting
• Consideración de precondiciones:
37. @herbert_juliana | #testinguy
Caso 1Caso 1Caso 1Caso 1 –––– MLMLMLML enenenen elelelel TestingTestingTestingTesting
• Preguntas de investigación:
• Cuán efectivo el la estrategia de priorización de testing?
• El procesamiento de lenguaje natural aumenta la efectividad del testing?
• Cual es la efectividad de la estrategia de priorización propuesta en
comparación a un expert en testing priorizando los casos de testing?
• Cuán eficiente es la estrategia de priorización de casos de testing?
40. @herbert_juliana | #testinguy
Machine Learning em el TestingMachine Learning em el TestingMachine Learning em el TestingMachine Learning em el Testing
41. @herbert_juliana | #testinguy
Caso 2Caso 2Caso 2Caso 2 –––– MLMLMLML enenenen TestingTestingTestingTesting
• Preguntas de investigación:
• Cual es impacto del uso de las features
de cada caso de testing en la calidad de
los diferentes algoritmos?
• Hay algún algoritmo de ML específico,
más adecuado para la priorización de
caso de testing black box?
• Es posible entrenar el sistema sin la
ayuda de un experto y conseguir
resultados adecuados?
43. @herbert_juliana | #testinguy
Uso de Árboles de DecisiónUso de Árboles de DecisiónUso de Árboles de DecisiónUso de Árboles de Decisión
Caso 3 – ML en el Testing
45. @herbert_juliana | #testinguy
Testing de Interfaz GráficaTesting de Interfaz GráficaTesting de Interfaz GráficaTesting de Interfaz Gráfica
Caso 4 – ML en el Testing
46. @herbert_juliana | #testinguy
Caso 4Caso 4Caso 4Caso 4 –––– Testing de Interfaz GráficaTesting de Interfaz GráficaTesting de Interfaz GráficaTesting de Interfaz Gráfica
• Con ML: no es necesario identificar de antemano todos los problemas
posibles.
• Redes neurales convolucionales para la identificación de patrones en
las pantallas.
47. @herbert_juliana | #testinguy
Caso 4Caso 4Caso 4Caso 4 –––– Testing de Interfaz GráficaTesting de Interfaz GráficaTesting de Interfaz GráficaTesting de Interfaz Gráfica
• Uso de lenguaje natural para la especificación de los casos de testing.
Fuente: https://rangle.io/blog/better-software-testing-with-machine-learning-2/
49. @herbert_juliana | #testinguy
Herramientas que ya usan MLHerramientas que ya usan MLHerramientas que ya usan MLHerramientas que ya usan ML
• Selenium
• Applitools
• SauceLabs
• Testim
• Sealights
• Test.AI
• Mabl
• ReTest
• ReportPortal
https://endtest.io/
Otras ideas:
https://blog.goodaudience.com/machine-learning-for-automation-testing-
698230917082
https://www.softwaretestpro.com/how-machine-learning-is-being-used-in-
new-age-qa-automation-tools/
https://www.testcraft.io/machine-learning-used-test-automation/
50. @herbert_juliana | #testinguy
Referencias de Material UtilizadoReferencias de Material UtilizadoReferencias de Material UtilizadoReferencias de Material Utilizado
GÉRON, A. Hands-on Machine Learning with Scikit-Learn, Keras, and
TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems – 2
ed. O´Reilly Media. 2019. 600p.
Kaner, C. et al. Testing Computer Software – 2 ed. John Wiley & Sons. 1999.
496 p.
Kaner, C. et al. The Domain Testing Workbook. Context Driven Press. 2013.
488 p.
Myers, G. J. et al. The Art of Software Testing – 3 ed. Wiley. 2011. 240 p.
TOPOL, E. Deep Medicine: How Artificial Intelligence Can Make Healthcare
Human Again. Basic Books. 2019. 400 p.
51. @herbert_juliana | #testinguy
Juliana Herbert
julianash@ufcspa.edu.br
@herbert_juliana
13 y 14 de mayo, 2019
testinguy.org | @testinguy | #testinguy
¿PREGUNTAS?
¡MUCHAS GRACIAS!