Un Método de Generación de Pruebas de
Rendimiento para Múltiples Tecnologías desde
Modelos UML con Anotaciones MARTE.
Jornadas SISTEDES 2012
Universidad de Almería
EL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLA
Un Método de Generación de Pruebas de Rendimiento para Múltiples Tecnologías desde Modelos UML con Anotaciones MARTE
1. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Un Método de Generación de Pruebas de
Rendimiento para Múltiples Tecnologías desde
Modelos UML con Anotaciones MARTE
A. García Domínguez e I. Medina Bulo
SE
Universidad de Cádiz, España
JISBD 2012
18 septiembre, 2012
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 1 / 19
2. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Contenidos
1 Introducción
Motivación
Modelos de rendimiento
Algoritmos de inferencia
2 Generación de artefactos de prueba de rendimiento
Enfoque general
Desde pruebas unitarias en Java
Desde documentos WSDL
3 Conclusiones y trabajo futuro
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 2 / 19
3. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Motivación
Rendimiento como requisito
En algunos contextos, puede ser clave para tener éxito
Se firman Acuerdos de Nivel de Servicio en partes críticas
Es difícil garantizar el cumplimiento de un acuerdo en una
composición de Servicios Web
Principal reto: dependencia en otros servicios
¿Cuánto rendimiento debemos pedir?
Insuficiente: no cumpliremos nuestro acuerdo
Excesivo: pagaremos más de la cuenta
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 3 / 19
4. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Enfoques existentes para obtener el rendimiento deseado
¿Desde acuerdos o desde código? ¿Ascendente o descendente?
Ingeniería de rendimiento tradicional: acuerdos, ascendente
Tenemos acuerdos para todos los componentes
Estimamos el rendimiento global y comparamos
¿Y si no tenemos esa información para algún servicio?
Perfilado o monitorización: código, ascendente
Hemos implementado todos los servicios
Medimos tiempos reales y corregimos cuellos de botella
¿Y si tenemos que firmar un acuerdo antes de implementar?
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 4 / 19
5. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Nuestro enfoque: inferencia de rendimiento
Características
Desde acuerdos, descendente
Tenemos requisitos para la composición y anotaciones locales
con nuestros conocimientos parciales sobre los servicios usados
Inferimos el rendimiento mínimo a exigir a los servicios
Ventajas
Puede usar la información incompleta que haya disponible
sobre los servicios
Puede ayudar a definir el acuerdo antes de implementar
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 5 / 19
6. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Ejemplo de modelo: motor de búsqueda de viajes
Consultar
Aerolínea A
Recibir
Consulta
Consultar
Aerolínea B
Consultar
c Hotel C
Reservar
!c Consultar
Hotel D
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 6 / 19
7. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Inferencia de peticiones por segundo
«gastep»
{throughput = ?}
«gastep» CAA «gascenario»
{throughput = ?} {throughput =
RC «gastep» (10Hz, req)}
{throughput = ?}
CAB
«gastep» «gastep»
{prob = 0.8} {throughput = ?}
c «gastep»
CHC
{throughput = ?}
«gastep» «gastep» R
{prob = 0.2} {throughput = ?}
!c CHD
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 7 / 19
8. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Inferencia de peticiones por segundo
«gastep»
{throughput = 10}
«gastep» CAA «gascenario»
{throughput = 10} {throughput =
RC «gastep» (10Hz, req)}
{throughput = 10}
CAB
«gastep» «gastep»
{prob = 0.8} {throughput = 8}
c «gastep»
CHC
{throughput = 10}
«gastep» «gastep» R
{prob = 0.2} {throughput = 2}
!c CHD
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 7 / 19
9. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Inferencia de tiempos límite
«gastep» {hostDemand «gascenario»
= {(5, req)}} {respT = (10s, req)}
«gastep» {hostDemand QAA «gaanalysiscontext»
= {(sRP, req)}} {contextParams = {
«gastep» {hostDemand sRP = ?, sAB = ?,
RR sHC = ?, sHD = ?,
= {(sAB, req)},rep=3}
sR = ?}}
QAB
«gastep» {hostDemand
= {(sHC, req)}}
QHC «gastep» {hostDemand
= {(3 × sR, req)}}
«gastep» {hostDemand B
= {(2 + sHD, req)}}
QHD
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 8 / 19
10. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Inferencia de tiempos límite
«gastep» {hostDemand «gascenario»
= {(5, req)}} {respT = (10s, req)}
«gastep» {hostDemand QAA «gaanalysiscontext»
= {(sRP, req)}} {contextParams = {
«gastep» {hostDemand sRP = ?, sAB = ?,
RR sHC = ?, sHD = ?,
= {(sAB, req)},rep=3}
sR = ?}}
QAB
«gastep» {hostDemand
= {(sHC, req)}}
QHC «gastep» {hostDemand
= {(3 × sR, req)}}
«gastep» {hostDemand B
= {(2 + sHD, req)}}
QHD
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 8 / 19
11. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Inferencia de tiempos límite
«gastep» {hostDemand «gascenario»
= {(5, req)}} {respT = (10s, req)}
«gastep» {hostDemand QAA «gaanalysiscontext»
= {(sRP, req)}} {contextParams = {
«gastep» {hostDemand sRP = 0,6, sAB = 1,66,
RR sHC = 2,6, sHD = 0,6,
= {(sAB, req)},rep=3}
sR = 0,6}}
QAB
«gastep» {hostDemand
= {(sHC, req)}}
QHC «gastep» {hostDemand
= {(3 × sR, req)}}
«gastep» {hostDemand B
= {(2 + sHD, req)}}
QHD
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 8 / 19
12. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Contenidos
1 Introducción
Motivación
Modelos de rendimiento
Algoritmos de inferencia
2 Generación de artefactos de prueba de rendimiento
Enfoque general
Desde pruebas unitarias en Java
Desde documentos WSDL
3 Conclusiones y trabajo futuro
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 9 / 19
13. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Punto de partida
Modelo de Modelo
rendimiento diseño/impl.
Transformación
M2T
Artefactos
de pruebas
¿Cómo podemos relacionar los modelos de rendimiento con los
modelos de diseño e implementación, a la vez que los mantenemos
limpios de detalles innecesarios?
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 10 / 19
14. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Entrelazado de modelos para unir rendimiento y diseño
Modelo de Modelo
rendimiento diseño/impl.
Modelo Transformación
entrelazado M2T
Artefactos
de pruebas
¿Qué hacer cuando no tenemos modelos de diseño o de
implementación, sino sólo código?
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 11 / 19
15. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Extracción de modelos desde código
Código
Modelo de Modelo Extracción
rendimiento diseño/impl. de modelos
Modelo de Transformación
entrelazado M2T
Artefactos
de pruebas
¿Qué hacer si el modelo de entrelazado no es suficientemente
detallado?
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 12 / 19
16. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Refinamiento de modelos de entrelazado y resultado final
Código
Modelo de Modelo Extracción
rendimiento diseño/impl. de modelos
Modelo de Transf. M2M
entrelazado de refinado
Modelo entr. Transformación
refinado M2T
Artefactos
de pruebas
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 13 / 19
17. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Generación desde pruebas unitarias en Java
Muchos SW se hacen en Java (Apache Axis, Apache CXF) y se prueban con JUnit
Código Desc. modelos Modelo entrel. Artefactos de prueba
public class MisPruebasUnitarias {
@Test
public void rechazado() {
// ... test code ...
}
@Test
public void aceptado() {
// ... test code ...
}
}
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 14 / 19
18. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Generación desde pruebas unitarias en Java
Muchos SW se hacen en Java (Apache Axis, Apache CXF) y se prueban con JUnit
Código Desc. modelos Modelo entrel. Artefactos de prueba
Casos de prueba
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 14 / 19
19. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Generación desde pruebas unitarias en Java
Muchos SW se hacen en Java (Apache Axis, Apache CXF) y se prueban con JUnit
Código Desc. modelos Modelo entrel. Artefactos de prueba
Requisito de rendimiento
Caso de prueba
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 14 / 19
20. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Generación desde pruebas unitarias en Java
Muchos SW se hacen en Java (Apache Axis, Apache CXF) y se prueban con JUnit
Código Desc. modelos Modelo entrel. Artefactos de prueba
@RunWith(ContiPerfSuiteRunner.class)
@SuiteClasses(MyUnitTests.class)
@PerfTest( invocations = 100, threads = 10)
@Required(max=1000)
public class PruebaCargaInferida {}
Se usa la biblioteca ContiPerf para generar menos código
Se pueden convertir conjuntos completos o pruebas sueltas
Se pueden expresar tiempos límite como máximos, promedios,
percentiles (90 %, 95 % , 99 %) o medianas
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 14 / 19
21. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Generación desde documentos WSDL
Diferencias
Podemos usar el documento WSDL como modelo de diseño
Necesitamos otro metamodelo específico de entrelazado
Usamos una herramienta de pruebas de rendimiento separada:
The Grinder
Generación de casos de prueba: refinamiento del entrelazado
El anterior enfoque reutilizaba pruebas existentes
En este caso, el modelo de entrelazado puede especificar cómo
generar las pruebas
El paso de refinamiento del modelo de entrelazado podría
implementar la generación
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 15 / 19
22. Introducción Generación de artefactos de prueba de rendimiento Conclusiones y trabajo futuro
Conclusiones y trabajo futuro
Resultados
Hemos presentado un enfoque general para generar pruebas de
rendimiento para varias tecnologías desde los mismos requisitos
Hemos mostrado dos formas de usar este enfoque, empleando
tecnologías libremente disponibles
Ambos enfoques están implementados y disponibles bajo la
Eclipse Public License
Trabajo futuro
Estrategias alternativas para generar entradas desde WSDL
Validar el enfoque con casos de estudio mayores
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 16 / 19
23. Fin de la presentación
¡Gracias por su atención!
Código y descargas:
https://neptuno.uca.es/redmine/projects/sodmt
E-mail:
antonio.garciadominguez@uca.es
Twitter:
@antoniogado
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 17 / 19
24. Referencias I
A. García-Domínguez, I. Medina-Bulo and M. Marcos-Bárcena.
Model-driven design of performance requirements with UML
and MARTE.
Actas de ICSOFT 2011, Sevilla, España, págs. 54–63.
H. Bruneliere, J. Cabot, F. Jouault, and F. Madiot.
MoDisco: a generic and extensible framework for model driven
reverse engineering.
Actas de ASE 2010, Antwerp, Bélgica, págs. 173–174.
D. S. Kolovos.
Epsilon ModeLink.
http://eclipse.org/epsilon/doc/modelink/
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 18 / 19
25. Referencias II
V. Bergmann.
ContiPerf 2.
http://databene.org/contiperf.html
A. García Domínguez e I. Medina Bulo UCASE (Universidad de Cádiz)
Generación de Pruebas de Rendimiento desde MARTE 19 / 19