Está en la página 1de 25

Testing de

Performance
Conceptos, Documentos y
herramientas

Por Jose Pablo Sarco

Agenda









Conceptos
Por qu hacer pruebas de Performance?
Beneficios en cada tipo de test
Documentacin
 Metodologa
 Performance Test Plan
 Reporte Final de Performance
Conceptos importante
Buenas Practicas
Herramientas
 Comparativa
 Jmeter
 Conceptos Bsicos
 Creacin Manual de Test Plan
 Grabacin de Test Plan
 Bad Boy
 Jmeter
 Recoleccin de Resultados
Links de Inters y preguntas

Conceptos
Performance

Enfocadas en "Cunto?" y "Qu tan rpido?".


La evaluacin apunta a medir si se cumplen los requerimientos establecidos
por el cliente. Suelen llevarse a cabo en conjuncin con stress testing.
Objetivo: predecir anticipadamente problemas de rendimiento y degradacin
de recursos del sistema antes de su paso a produccin, y facilitar su correccin.

Conceptos
Performance

Remote
Network
Tema 1

1
2
3
4
Virtual
Testers

Host
Local
Server

Conceptos
Por qu hacer pruebas de Performance?

Scott Barber: Para determinar o estimar


varias caractersticas de performance bajo
varias condiciones

Se hace para tener un estimativo de cmo puede llegar a responder la aplicacin en el


ambiente de produccin (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.

Tcnicamente, se obtiene la siguiente informacin:


Evaluar la entrega: Cumple con lo que espera el cliente?; Cmo se estima que
funcione la aplicacin en produccin?
Evaluar la infraestructura elegida: Es adecuada para la capacidad que va a soportar?;
Se comparo con otras tecnologas?; Se producen cuellos de botella?

Conceptos
Load Testing
Se centra en "Cunto?" puede manejar la aplicacin.
La idea de estas pruebas es poner al lmite de las especificaciones la cantidad de usuarios
simultneos en la aplicacin y acercarse lo mas posible a como va a reaccionar la aplicacin 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.

Stress Testing
Recoge diversos resultados en materia de mediciones sobre diversos modelos de carga y
actividades que son ms "estresantes" de lo que la aplicacin 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 Test


Test
Performanc
e

Prueba de
Carga

Beneficios
Determina las caracter
caractersticas de velocidad,
escalabilidad y estabilidad de una
aplicaci
aplicacin.
Se enfoca en determinar si el usuario del
sistema va a estar satisfecho con las
caracter
caractersticas de performance de la
aplicaci
aplicacin.
Identificar coincidencias entre las
expectativas de performance y la realidad
Soporta tunning,
tunning, capacidad de
planeamiento y optimizaci
optimizacin del trabajo.


Determina el throughput requerido para


soportar anticipadamente los picos en
producci
produccin
Determina si el hardware del ambiente es
adecuado
Determina si el Load Balancer es adecuado
Detecta problemas de concurrencia
Detecta errores funcionales durante la
carga
Ayuda a determinar cuantos usuarios
puede manejar la aplicaci
aplicacin antes que la
performance se vea afectada.


Retos y puntos que no


tiene en cuenta
Puede no detectar algunos errores
funcionales que solo aparecen en
las pruebas de carga.
Si no es dise
diseado y validado
correctamente, puede arrojar
resultados muy poco significativos
a lo que ocurrir
ocurrir en producci
produccin.
A menos que las pruebas se
realicen en el ambiente de
producci
produccin, desde las mismas
maquinas de los usuarios finales,
siempre habr
habr un grado de
incertidumbre en los resultados.


No esta dise
diseado para enfocarse
primordialmente en la velocidad de
respuesta
Los resultados pueden ser usados
nicamente para compara con
otras pruebas de carga


Beneficios en cada tipo de Test


Test

Beneficios

Stress

Determinar si la informacin se
corrompe cuando la aplicacin se lleva
mas all de sus limites.
Determinar un estimativo de cuan lejos
(antes de ocasionar errores y lentitud)
puede llegar una aplicacin llevando al
limite el objetivo de carga.
Ayuda a determinar que clase de fallas
son mas importantes para manejar.

Retos y puntos que no tiene


en cuenta
Como las pruebas de stress son
irreales, los usuarios finales
pueden no considerar los
resultados.
Es difcil determinar cuanto
stress es necesario aplicar en la
aplicacin.
Puede ocasionar grande fallas
en la aplicacin y la red.


Documentacin
Metodologa

Relevamiento

Planificacin

Construccin
Ejecucin
Anlisis

Documentacin
Metodologa
Planificacin: Tiene como objetivo la correcta caracterizacin de la carga de trabajo.
Obtencin de requisitos.
Eleccin de las mtricas adecuadas.
Eleccin del tipo de pruebas.
Descripcin del sistema a probar.
Caracterizacin de la carga de trabajo.
Construccin: Tiene como Objetivo la Construccin de los Test Scripts y la
configuracin del ambiente de pruebas.
Definicin de Escenarios
Distribucin de tareas
Coordinacin con encargados de Servidor de Pruebas

Documentacin
Metodologa
Ejecucin: Tiene como objetivo correr los Test Scripts desarrollados en la etapa de
construccin.
Dependiendo del tamao del proyecto puede ocurrir 1 o varias veces.
Se registran las fecha y hora de ejecucin
Anlisis: Tiene como Objetivo recabar toda la informacin generada por las pruebas,
procesarla de manera que se pueda interpretar, sacar conclusiones y proponer
recomendaciones de cambio.
Recopilacin de Resultados
Foco en mtricas mas significativas
Definicin de grficos mas adecuados para mostrar la informacin
Proponer recomendaciones en funcin de los resultados obtenidos

Conceptos importantes
Average (Promedio): matemticamente 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 aplicacin. 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 mtrica es: Los datos con una desviacin
estndar superior a la mitad de su media debe ser tratada como sospechosa. Si es
exactamente ese valor, el juego de datos no tiene una distribucin normal.
Throughput (Rendimiento): Es la tasa promedio de mensajes entregados satisfactoriamente.
Comnmente 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 practicas
Tener objetivos y mtricas claras y con la aprobacin del cliente
Idealmente esto debera 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 aplicacin si sus expectativas no fueron
correctamente contabilizadas.

No olvidarse de la base de datos


Para aplicaciones web transaccionales las mtricas 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 mtricas para
el tamao de base de datos esperado y ese tamao debe ser reproducido en el ambiente de
pruebas.

Identificar los CU crticos


Los CU crticos son aquellos donde es necesaria una rpida 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 crticos para la percepcin del usuario final sobre la performance de la
aplicacin.

Herramientas
Comerciales
Contras

Excelentes opciones en GUI


Muchos tutoriales y ejemplos

Costosas

Mayor anlisis de resultados

Poco flexibles y pesadas

Open Source
A montones (Debe haber cerca de
20 aprox)
Se encuentra mucha ayuda en los
grupos de mails

Contras
A veces faltan tutoriales y
ejemplos

Son Gratis

Depende mucho del grado de


avance en que se encuentre

Muy Flexibles y livianas

Poco anlisis de resultados

Desarrollo Propio
Para aplicar en tecnologa
demasiado nueva

Contras
Solo si se planea seguir
mejorando y adaptando a otras
tecnologas
Flexibles

Herramientas
Comparativa
Criterio de
Evaluaci
Evaluacin

Descripci
Descripcin

OpenSTA

Apache
JMeter

WebLoad

LoadRunner

Protocols

Los protocolos de
comunicaci
comunicacin que
pueden ser
capturados,
manipulados y
simulados por la
aplicaci
aplicacin

HTTP 1.0 / 1.1 /


HTTPS (SSL),
SOAP/XML

HTTP,FTP,
HTTP,FTP,
SOAP/XMLSOAP/XMLRPC,JDBC

HTTP/S, WAP,
AJAX, ActiveX,
ActiveX,
Java, Web
services.
services. Es
posible grabar
scripts con multi
protocolo

Soporta muchos. Los


protocolos son cargados por
tem. Tiene una opci
opcin de
grabaci
grabacin por multimulti-protocolo

Playback
functions

Ejecuci
Ejecucin de los
scripts y
facilidades de
debug los scripts

Vista extendida
del log donde se
ven los calores
de los
par
parmetros y
los mensajes
del servidor.

Es una
herramienta
GUI. Entonces
hay muchos
GUI Listeners,
los cuales son
usados para
capturar la
grabaci
grabacin y
replicar los
mensajes.

Vista extendida
del log.
log. El cual
muestra los
pedidos y los
datos de
respuesta.

Vista extendida del log


donde se ven los valores de
los par
parmetros y los
mensajes del servidor.
Tambi
Tambin permite ver y
comparar la versi
versin grabada
de la pagina y los mensajes
del servidor. Tiene una
opci
opcin para hacer debug en
el generador de scripts.

Parametrizaci
Parametrizacin

Cambio din
dinmico
de valores para
variables pasadas
desde el cliente al
servidor durante
el POST para
asegurar una
simulaci
simulacin mas
real del
comportamiento
del usuario.

Gran cantidad
de facilidades
para data entry,
entry,
incluyendo
interfaces
Wizard para
generar
autom
automticament
e datos de
prueba.

La
parametrizaci
parametrizaci
n se puede
hacer por
interfaz, en el
control Users
Parameters
Parameters.

Gran cantidad de
facilidades para
data entry,
entry,
incluyendo
interfaces Wizard
para generar
autom
automticamente
datos de prueba.

Gran cantidad de facilidades


para data entry,
entry, incluyendo
interfaces Wizard para
generar autom
automticamente
datos de prueba.

Herramientas
Comparativa
Criterio de
Evaluaci
Evaluacin

Descripci
Descripcin

OpenSTA

Apache
JMeter

WebLoad

LoadRunner

Simulaci
Simulacin
de la
velocidad de
conexi
conexin de
los usuarios

Habilidad de emular
las diferentes
velocidades de la
red que pueden ser
utilizadas por los
usuarios

No lo permite.

No lo permite.
Pero puede
programarse
en JAVA

No lo permite en
la version Open
Source

Puede emular diferentes


velocidades de la red durante
la ejecuci
ejecucin.

Reportes y
an
anlisis

Facilidades para
examinar e
investigar los
resultados de las
pruebas incluyendo
contadores y
recursos
monitoreados.

Gr
Grficos
simples y
suficientes
como para
analizar los
resultados de
carga y uso
de recursos.
Los gr
grficos
pueden ser
exportados a
Excel.

Puede crear
gr
grficos pero
no reportes.

WebLOAD
Console muestra
reportes online de
las sesiones que
est
estn corriendo.
El usuario puede
crear sus propias
vistas de las
estad
estadsticas que
estos reportes
muestran. Se
puede ir
cambiando de
reportes gr
grficos
o textuales
(Tablas)

Posee una gran cantidad de


gr
grficos sofisticados con
much
muchsimas facilidades.
Genera repotes autom
automticos
en Word. Se pueden obtener
reportes por cada usuario
simulado.

Extensibilida
d

La habilidad de
incrementar la
funcionalidad de la
herramienta.

Pueden
escribirse
mdulos en
SCL. Adem
Adems
al ser
OpenSource
van

Funciones
Beanshell/JA
Beanshell/JA
VA pueden
ser definidas
y ser usadas
como plugplug-in

Permite agregar
objetos Java,
ActiveX o COM en
los test Scripts. El
framework de
WebLoad es
flexible y facilita la

Librer
Libreras adicionales en TSL o
C , limitado por las
capacidades funcionales de la
herramienta.

Jmeter
Conceptos bsicos
Qu es Jmeter?
Es una herramienta Java la cual fue diseada para hacer pruebas de carga
en aplicaciones Web, pero se expandi a otras funciones. Tpicamente es usada
para medir Performance y Pruebas de carga, es una herramienta OpenSource.

Jmeter
Conceptos bsicos
Cmo Funciona?

Jmeter
Conceptos bsicos
ThreadGroup
Es el punto de inicio de cualquier Test Plan. Todos los controles y samplers
deben estar debajo del ThreadGroup. Otros elementos, como Listeners, pueden
estar en la misma jerarqua.
Controla el numero de threads (Usuarios virtuales) que se usaran en la
ejecucin 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) despus de la creacin del Thread anterior.
Loop Count: Cantidad de veces que se correr el Test Plan.
Scheduler: Brinda mas opciones a la ejecucin de las pruebas.
Podemos agregar la hora de comienzo y la hora de fin, los campos
Duracin y Delay reemplazan a los dos anteriores.

Jmeter
Conceptos bsicos
Samplers
Le indica a Jmeter como mandar los pedidos al servidor. Cada sampler tiene
caractersticas diferentes y puede mejorarse agregando elementos de
configuracin(Configuration Elements ).
Los tipos de samplers son:

Jmeter
Conceptos bsicos
Controladores Lgicos
Permite configurar la lgica que Jmeter usa para decidir cuando mandar un
request.
Los controladores lgicos son:

Jmeter
Conceptos bsicos
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 segn la necesidad del escenario de
pruebas.

Assertions
Permiten validar hechos (sucesos) acerca de las respuestas del servidor en
la ejecucin de las pruebas. Usando assertions se puede testear que la
aplicacin 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

Jmeter
Conceptos bsicos
Pre-Processor Element
Ejecutan acciones antes que un sampler realice un pedido. Comnmente es
utilizado para modificar la configuracin del sampler justo antas que se ejecute o
para actualizar variables que no son extradas 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. Comnmente
es utilizado para procesar los datos de respuesta o extraer informacin de esta.
El mas utilizado es el Regular Expression Extractor para extraer los valores de
ciertos tags del HTML.
Orden de Ejecucin
Los componentes de Jmeter se ejecutan con el siguiente orden de prioridad:
Configuration elements
Pre-Processors
Timers
Sampler
Post-Processors
Assertions
Listeners

Links de Inters
Performance
http://www.sqaforums.com/postlist.php?Board=UBB2
http://www.perftestplus.com
http://searchsoftwarequality.techtarget.com/topics/0,295493,sid92_tax306129,00.ht
ml
http://www.logigear.com/resources/article_links_-_test_types/load_performance.asp
http://members.tripod.com/~bazman/loadtest.html?button9=Load+Testing+of+We
bsites

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 espaol)
http://www.sqaforums.com/postlist.php?Cat=0&Board=UBB54&page=1

Muchas Gracias!!!!

Jose Pablo Sarco


sarcojp@hotmail.com

También podría gustarte