Testing de Performance - sqaforums.com Criterio de Descripci ón OpenSTA Evaluaci ón. Herramientas...
Transcript of Testing de Performance - sqaforums.com Criterio de Descripci ón OpenSTA Evaluaci ón. Herramientas...
Conceptos, Documentos y Conceptos, Documentos y herramientasherramientas
Testing de Testing de PerformancePerformance
Por Jose Pablo SarcoPor Jose Pablo Sarco
AgendaAgenda
� Conceptos
� ¿Por qué hacer pruebas de Performance?
� Beneficios en cada tipo de test
� Documentación
� Metodología
� Performance Test Plan
� Reporte Final de Performance
� Conceptos importante
� Buenas Practicas
� Herramientas
� Comparativa
� Jmeter
�Conceptos Básicos
�Creación Manual de Test Plan
�Grabación de Test Plan
�Bad Boy
�Jmeter
�Recolección de Resultados
� Links de Interés y preguntas
Performance
ConceptosConceptos
Enfocadas en "¿Cuánto?" y "¿Qué tan rápido?".
La evaluación apunta a medir si se cumplen los requerimientos establecidos por el cliente. Suelen llevarse a cabo en conjunción con stress testing.
Objetivo: predecir anticipadamente problemas de rendimiento y degradación de recursos del sistema antes de su paso a producción, y facilitar su corrección.
Performance
ConceptosConceptos
Tema 1
1
2
3
4Local Server
Remote Network
HostVirtual Testers
ConceptosConceptos
Scott Barber: “Para determinar o estimar varias características de performance bajo varias condiciones”
¿Por qué hacer pruebas de Performance?
Se hace para tener un estimativo de cómo puede llegar a responder la aplicación en el ambiente de producción (es imposible saber exactamente como va a responder, ya que nunca se tienen los datos o el equipamiento necesario)
Para saber si alcanza las expectativas de performance del cliente, es decir, la única meta es darle valor agregado al usuario final.
Técnicamente, se obtiene la siguiente información:
Evaluar la entrega: ¿Cumple con lo que espera el cliente?; ¿Cómo se estima que funcione la aplicación en producción?
Evaluar la infraestructura elegida: ¿Es adecuada para la capacidad que va a soportar?; ¿Se comparo con otras tecnologías?; ¿Se producen cuellos de botella?
ConceptosConceptos
Se centra en "¿Cuánto?" puede manejar la aplicación.
La idea de estas pruebas es poner al límite de las especificaciones la cantidad de usuarios simultáneos en la aplicación y acercarse lo mas posible a como va a reaccionar la aplicación en el mundo real.
Existen dos ramas:
Longevity testing: Evaluar la estabilidad del sistema para manejar una constante carga de trabajo durante un periodo extenso.
Volume Testing: Poner al sistema al limite de carga de trabajo durante un periodo corto.
Load Testing
Stress Testing
Recoge diversos resultados en materia de mediciones sobre diversos modelos de carga y actividades que son más "estresantes" de lo que la aplicación va a utilizar a la hora de entregarse a los verdaderos usuarios (excede las especificaciones).
Nos indica como va a reaccionar el sistema cuando este pasa su limite de funcionamiento.
Beneficios en cada tipo de TestBeneficios en cada tipo de Test
��No esta diseNo esta diseññado para enfocarse ado para enfocarse primordialmente en la velocidad de primordialmente en la velocidad de respuestarespuesta
��Los resultados pueden ser usados Los resultados pueden ser usados úúnicamente para compara con nicamente para compara con otras pruebas de cargaotras pruebas de carga
��Determina el Determina el throughputthroughput requerido para requerido para soportar anticipadamente los picos en soportar anticipadamente los picos en producciproduccióónn
��Determina si el hardware del ambiente es Determina si el hardware del ambiente es adecuadoadecuado
��Determina si el Load Determina si el Load BalancerBalancer es adecuadoes adecuado
��Detecta problemas de concurrenciaDetecta problemas de concurrencia
��Detecta errores funcionales durante la Detecta errores funcionales durante la cargacarga
��Ayuda a determinar cuantos usuarios Ayuda a determinar cuantos usuarios puede manejar la aplicacipuede manejar la aplicacióón antes que la n antes que la performance se vea afectada.performance se vea afectada.
Prueba de Prueba de CargaCarga
��Puede no detectar algunos errores Puede no detectar algunos errores funcionales que solo aparecen en funcionales que solo aparecen en las pruebas de carga.las pruebas de carga.
��Si no es diseSi no es diseññado y validado ado y validado correctamente, puede arrojar correctamente, puede arrojar resultados muy poco significativos resultados muy poco significativos a lo que ocurrira lo que ocurriráá en produccien produccióón.n.
��A menos que las pruebas se A menos que las pruebas se realicen en el ambiente de realicen en el ambiente de producciproduccióón, desde las mismas n, desde las mismas maquinas de los usuarios finales, maquinas de los usuarios finales, siempre habrsiempre habráá un grado de un grado de incertidumbre en los resultados.incertidumbre en los resultados.
��Determina las caracterDetermina las caracteríísticas de velocidad, sticas de velocidad, escalabilidad y estabilidad de una escalabilidad y estabilidad de una aplicaciaplicacióón.n.
��Se enfoca en determinar si el usuario del Se enfoca en determinar si el usuario del sistema va a estar satisfecho con las sistema va a estar satisfecho con las caractercaracteríísticas de performance de la sticas de performance de la aplicaciaplicacióón.n.
��Identificar coincidencias entre las Identificar coincidencias entre las expectativas de performance y la realidadexpectativas de performance y la realidad
��Soporta Soporta tunningtunning, capacidad de , capacidad de planeamiento y optimizaciplaneamiento y optimizacióón del trabajo. n del trabajo.
PerformancPerformancee
Retos y puntos que no Retos y puntos que no
tiene en cuentatiene en cuentaBeneficiosBeneficiosTestTest
��Como las pruebas de stress son Como las pruebas de stress son irreales, los usuarios finales irreales, los usuarios finales pueden no considerar los pueden no considerar los resultados.resultados.
��Es difEs difíícil determinar cuanto cil determinar cuanto stress es necesario aplicar en la stress es necesario aplicar en la aplicaciaplicacióón.n.
��Puede ocasionar grande fallas Puede ocasionar grande fallas en la aplicacien la aplicacióón y la red.n y la red.
��Determinar si la informaciDeterminar si la informacióón se n se corrompe cuando la aplicacicorrompe cuando la aplicacióón se lleva n se lleva mas allmas alláá de sus limites. de sus limites.
��Determinar un estimativo de cuan lejos Determinar un estimativo de cuan lejos (antes de ocasionar errores y lentitud) (antes de ocasionar errores y lentitud) puede llegar una aplicacipuede llegar una aplicacióón llevando al n llevando al limite el objetivo de carga. limite el objetivo de carga.
��Ayuda a determinar que clase de fallas Ayuda a determinar que clase de fallas son mas importantes para manejar.son mas importantes para manejar.
StressStress
Retos y puntos que no tiene Retos y puntos que no tiene
en cuentaen cuentaBeneficiosBeneficiosTestTest
Beneficios en cada tipo de TestBeneficios en cada tipo de Test
DocumentaciDocumentacióón n Metodología
Ejecución
Relevamiento
Planificación
Construcción
Análisis
DocumentaciDocumentacióón n Planificación: Tiene como objetivo la correcta caracterización de la carga de trabajo.
Obtención de requisitos.
Elección de las métricas adecuadas.
Elección del tipo de pruebas.
Descripción del sistema a probar.
Caracterización de la carga de trabajo.
Construcción: Tiene como Objetivo la Construcción de los Test Scripts y la configuración del ambiente de pruebas.
Definición de Escenarios
Distribución de tareas
Coordinación con encargados de Servidor de Pruebas
Metodología
DocumentaciDocumentacióón n Ejecución: Tiene como objetivo correr los Test Scripts desarrollados en la etapa de construcción.
Dependiendo del tamaño del proyecto puede ocurrir 1 o varias veces.
Se registran las fecha y hora de ejecución
Análisis: Tiene como Objetivo recabar toda la información generada por las pruebas, procesarla de manera que se pueda interpretar, sacar conclusiones y proponer recomendaciones de cambio.
Recopilación de Resultados
Foco en métricas mas significativas
Definición de gráficos mas adecuados para mostrar la información
Proponer recomendaciones en función de los resultados obtenidos
Metodología
Conceptos importantesConceptos importantes
Average (Promedio): matemáticamente se refiere a al promedio del juego de datos. Es una medida que por si sola dice muy poco sobre lo resultados, pero nos da una idea de cual es el comportamiento general de la aplicación. Median (Mediana): Simplemente es el valor medio del juego de datos cuando estos son ordenados de menor a mayor. En los casos en que la cantidad de datos es par, se toman los dos valores centrales y se saca el promedio de estos.
Standard Deviation (Desvió Standard): Es la cantidad de diferencia dentro del juego de datos que abarca la parte superior de aproximadamente el 68 % de todas las mediciones en el juego de datos. Esto significa que mientras mas grande es este numero menos coherente son los resultados obtenidos. Una norma utilizada para esta métrica es: “Los datos con una desviación estándar superior a la mitad de su media debe ser tratada como sospechosa. Si es exactamente ese valor, el juego de datos no tiene una distribución normal”.
Throughput (Rendimiento): Es la tasa promedio de mensajes entregados satisfactoriamente. Comúnmente se mide en bits por segundos (bps).
Latency (Latencia): Tiempo necesario para reunir la solicitud y el montaje de la respuesta.
90% Line: Es el valor por debajo del cual el 90% de las muestras fallan.
Buenas practicasBuenas practicasIdealmente esto debería ser parte fundamental del proceso de Performance Testing, ya que sin un objetivo claro para cumplir, el proceso se vuelve un camino sin fin que puede dejar insatisfecho al usuario final en cuanto a la Performance de la aplicación si sus expectativas no fueron correctamente contabilizadas.
Para aplicaciones web transaccionales las métricas mas comunes son numero de usuarios concurrentes y tiempo de respuesta. Sin embargo, un solo usuario con todo el sistema para él puede experimentar un rendimiento diferente, dependiendo de la cantidad de datos que existan en la base de datos. Por lo tanto, los requerimientos de performance deben incluir métricas para el tamaño de base de datos esperado y ese tamaño debe ser reproducido en el ambiente de pruebas.
Tener objetivos y métricas claras y con la aprobación del cliente
No olvidarse de la base de datos
Los CU críticos son aquellos donde es necesaria una rápida respuesta a la vista del usuario final o aquellos para los cuales hay un riesgo de performance.
Otra cosa a considerar es que no es necesario probar demasiado caminos no muy frecuentes, pero debe asegurarse que cumplan con los requerimientos las pocas veces que son llamadas.
Finalmente, por cada caso de uso critico debemos poner foco en los escenarios que son ejecutados mas frecuentemente y son críticos para la percepción del usuario final sobre la performance de la aplicación.
Identificar los CU críticos
HerramientasHerramientasComerciales
Open Source
Desarrollo Propio
Excelentes opciones en GUI
Muchos tutoriales y ejemplos
Mayor análisis de resultados
Contras
Costosas
Poco flexibles y pesadas
A montones (Debe haber cerca de 20 aprox)
Se encuentra mucha ayuda en los grupos de mails
Son Gratis
Muy Flexibles y livianas
Contras
A veces faltan tutoriales y ejemplos
Depende mucho del grado de avance en que se encuentre
Poco análisis de resultados
Para aplicar en tecnología demasiado nueva
Contras
Solo si se planea seguir mejorando y adaptando a otras tecnologías
Flexibles
HerramientasHerramientasComparativa
Gran cantidad de facilidades Gran cantidad de facilidades para data para data entryentry, incluyendo , incluyendo interfaces interfaces WizardWizard para para generar automgenerar automááticamente ticamente datos de prueba.datos de prueba.
Gran cantidad de Gran cantidad de facilidades para facilidades para data data entryentry, , incluyendo incluyendo interfaces interfaces WizardWizardpara generar para generar automautomááticamente ticamente datos de prueba.datos de prueba.
La La parametrizaciparametrizacióónn se puede se puede hacer por hacer por interfaz, en el interfaz, en el control control ‘‘Users Users ParametersParameters’’..
Gran cantidad Gran cantidad de facilidades de facilidades para data para data entryentry, , incluyendo incluyendo interfaces interfaces WizardWizard para para generar generar automautomááticamentticamente datos de e datos de prueba.prueba.
Cambio dinCambio dináámico mico de valores para de valores para variables pasadas variables pasadas desde el cliente al desde el cliente al servidor durante servidor durante el POST para el POST para asegurar una asegurar una simulacisimulacióón mas n mas real del real del comportamiento comportamiento del usuario. del usuario.
ParametrizaciParametrizacióónn
Vista extendida del Vista extendida del loglogdonde se ven los valores de donde se ven los valores de los parlos paráámetros y los metros y los mensajes del servidor. mensajes del servidor. TambiTambiéén permite ver y n permite ver y comparar la versicomparar la versióón grabada n grabada de la pagina y los mensajes de la pagina y los mensajes del servidor. Tiene una del servidor. Tiene una opciopcióón para hacer n para hacer debugdebug en en el generador de scripts.el generador de scripts.
Vista extendida Vista extendida del del loglog. El cual . El cual muestra los muestra los pedidos y los pedidos y los datos de datos de respuesta.respuesta.
Es una Es una herramienta herramienta GUI. Entonces GUI. Entonces hay muchos hay muchos GUI Listeners, GUI Listeners, los cuales son los cuales son usados para usados para capturar la capturar la grabacigrabacióón y n y replicar los replicar los mensajes.mensajes.
Vista extendida Vista extendida del del loglog donde se donde se ven los calores ven los calores de los de los parparáámetros y metros y los mensajes los mensajes del servidor.del servidor.
EjecuciEjecucióón de los n de los scripts y scripts y facilidades de facilidades de debugdebug los scriptslos scripts
PlaybackPlaybackfunctionsfunctions
Soporta muchos. Los Soporta muchos. Los protocolos son cargados por protocolos son cargados por íítem. Tiene una opcitem. Tiene una opcióón de n de grabacigrabacióón por n por multimulti--protocoloprotocolo
HTTP/S, WAP, HTTP/S, WAP, AJAX, AJAX, ActiveXActiveX, , Java, Web Java, Web servicesservices. Es . Es posible grabar posible grabar scripts con scripts con multimultiprotocoloprotocolo
HTTP,FTPHTTP,FTP, , SOAP/XMLSOAP/XML--RPC,JDBCRPC,JDBC
HTTP 1.0 / 1.1 / HTTP 1.0 / 1.1 / HTTPS (SSL), HTTPS (SSL), SOAP/XMLSOAP/XML
Los protocolos de Los protocolos de comunicacicomunicacióón que n que pueden ser pueden ser capturados, capturados, manipulados y manipulados y simulados por la simulados por la aplicaciaplicacióónn
ProtocolsProtocols
LoadRunnerLoadRunnerWebLoadWebLoadApache Apache JMeterJMeter
OpenSTAOpenSTADescripciDescripci óónnCriterio de Criterio de EvaluaciEvaluaci óónn
HerramientasHerramientasComparativa
LibrerLibreríías adicionales en TSL o as adicionales en TSL o C , limitado por las C , limitado por las capacidades funcionales de la capacidades funcionales de la herramienta.herramienta.
Permite agregar Permite agregar objetos Java, objetos Java, ActiveXActiveX o COM en o COM en los test Scripts. El los test Scripts. El frameworkframework de de WebLoadWebLoad es es flexible y facilita la flexible y facilita la
Funciones Funciones BeanshellBeanshell/JA/JAVA pueden VA pueden ser definidas ser definidas y ser usadas y ser usadas como como plugplug--in in
Pueden Pueden escribirse escribirse mmóódulos en dulos en SCL. AdemSCL. Ademáás s al ser al ser OpenSourceOpenSourcevan van
La habilidad de La habilidad de incrementar la incrementar la funcionalidad de la funcionalidad de la herramienta.herramienta.
ExtensibilidaExtensibilidadd
Posee una gran cantidad de Posee una gran cantidad de grgrááficos sofisticados con ficos sofisticados con muchmuchíísimas facilidades. simas facilidades. Genera repotes automGenera repotes automááticos ticos en Word. Se pueden obtener en Word. Se pueden obtener reportes por cada usuario reportes por cada usuario simulado.simulado.
WebLOADWebLOADConsoleConsole muestra muestra reportes online de reportes online de las sesiones que las sesiones que estestáán corriendo. n corriendo. El usuario puede El usuario puede crear sus propias crear sus propias vistas de las vistas de las estadestadíísticas que sticas que estos reportes estos reportes muestran. Se muestran. Se puede ir puede ir cambiando de cambiando de reportes grreportes grááficos ficos o textuales o textuales (Tablas)(Tablas)
Puede crear Puede crear grgrááficos pero ficos pero no reportes.no reportes.
GrGrááficos ficos simples y simples y suficientes suficientes como para como para analizar los analizar los resultados de resultados de carga y uso carga y uso de recursos. de recursos. Los grLos grááficos ficos pueden ser pueden ser exportados a exportados a Excel.Excel.
Facilidades para Facilidades para examinar e examinar e investigar los investigar los resultados de las resultados de las pruebas incluyendo pruebas incluyendo contadores y contadores y recursos recursos monitoreados.monitoreados.
Reportes y Reportes y ananáálisis lisis
Puede emular diferentes Puede emular diferentes velocidades de la red durante velocidades de la red durante la ejecucila ejecucióón.n.
No lo permite en No lo permite en la la versionversion OpenOpenSourceSource
No lo permite. No lo permite. Pero puede Pero puede programarse programarse en JAVAen JAVA
No lo permite. No lo permite. Habilidad de emular Habilidad de emular las diferentes las diferentes velocidades de la velocidades de la red que pueden ser red que pueden ser utilizadas por los utilizadas por los usuariosusuarios
SimulaciSimulacióón n de la de la velocidad de velocidad de conexiconexióón de n de los usuarioslos usuarios
LoadRunnerLoadRunnerWebLoadWebLoadApache Apache JMeterJMeter
OpenSTAOpenSTADescripciDescripci óónnCriterio de Criterio de EvaluaciEvaluaci óónn
JmeterJmeterConceptos básicos
¿Qué es Jmeter?
Es una herramienta Java la cual fue diseñada para hacer pruebas de carga en aplicaciones Web, pero se expandió a otras funciones. Típicamente es usada para medir Performance y Pruebas de carga, es una herramienta OpenSource.
JmeterJmeterConceptos básicos
¿Cómo Funciona?
JmeterJmeterConceptos básicos
ThreadGroup
Es el punto de inicio de cualquier Test Plan. Todos los controles y samplersdeben estar debajo del ThreadGroup. Otros elementos, como Listeners, pueden estar en la misma jerarquía.
Controla el numero de threads (Usuarios virtuales) que se usaran en la ejecución de las pruebas. Las opciones que tiene son:
Number of threads: Cantidad de usuarios. Cada thread ejecuta el Test Plan entero en forma independiente.
Ramp-up Period: Le indica a Jmeter el periodo de tiempo en que se llegara al numero total de usuarios. Si son usados 10 threads y el ramp-up es de 100 seg, entonces Jmeter se tomara 100 segundos para crear y correr los 10 threads. Cada thread sera creado 10 seg(100/10) después de la creación del Thread anterior.
Loop Count: Cantidad de veces que se correrá el Test Plan.
Scheduler: Brinda mas opciones a la ejecución de las pruebas. Podemos agregar la hora de comienzo y la hora de fin, los camposDuración y Delay reemplazan a los dos anteriores.
JmeterJmeterConceptos básicos
Samplers
Le indica a Jmeter como mandar los pedidos al servidor. Cada sampler tiene características diferentes y puede mejorarse agregando elementos de configuración(Configuration Elements ).
Los tipos de samplers son:
JmeterJmeterConceptos básicos
Controladores Lógicos
Permite configurar la lógica que Jmeter usa para decidir cuando mandar un request.
Los controladores lógicos son:
JmeterJmeterConceptos básicos
Timers
Por default los Thread de Jmeter mandan los pedidos sin pausa. El agregado de timers dan la posibilidad de especificar el ‘Think Time’ para que las pruebas sean mas reales. Hay diferentes tipos según la necesidad del escenario de pruebas.
Assertions
Permiten validar hechos (sucesos) acerca de las respuestas del servidor en la ejecución de las pruebas. Usando assertions se puede ‘testear’ que la aplicación esta funcionando correctamente, recibiendo las respuestas esperadas del servidor. Pueden ser agregados a cualquier sampler.
Configuration Elements
Trabajan junto a los samplers. Si bien no mandan pedidos, pueden agregar a o modificar los pedidos. Los mas usados son HTTP Cookie Manager, HTTP Request Default, User Defined Variables estre otras
JmeterJmeterConceptos básicos
Pre-Processor Element
Ejecutan acciones antes que un sampler realice un pedido. Comúnmente es utilizado para modificar la configuración del sampler justo antas que se ejecute o para actualizar variables que no son extraídas del texto de respuesta. El mas utilizado es el HTTP URL Re-writing Modifier para el manejo de sesiones de usuario.
Post-Processor Element
Ejecutan acciones despues que un sampler realice un pedido. Comúnmente es utilizado para procesar los datos de respuesta o extraer información de esta. El mas utilizado es el Regular Expression Extractor para extraer los valores de ciertos tags del HTML.
Orden de Ejecución
Los componentes de Jmeter se ejecutan con el siguiente orden de prioridad:• Configuration elements • Pre-Processors • Timers • Sampler • Post-Processors• Assertions• Listeners
Links de InterLinks de Interéés s Performance
http://www.sqaforums.com/postlist.php?Board=UBB2
http://www.perftestplus.com
http://searchsoftwarequality.techtarget.com/topics/0,295493,sid92_tax306129,00.html
http://www.logigear.com/resources/article_links_-_test_types/load_performance.asp
http://members.tripod.com/~bazman/loadtest.html?button9=Load+Testing+of+Websites
Jmeter
Pagina oficial: http://jakarta.apache.org/jmeter/
Bad Boy: http://www.badboy.com.au/
Otras:
http://vamshisomanchi.wordpress.com/2008/04/28/jmeter-stress-testing/
http://www.javaworld.com/javaworld/jw-07-2005/jw-0711-jmeter.html?page=1
http://www.osmosislatina.com/jmeter/basico.htm (en español)
http://www.sqaforums.com/postlist.php?Cat=0&Board=UBB54&page=1