Quisiera empezar con las definiciones básicas utilizadas en todo lo
referido a las pruebas de carga y performance Testing (Performance &
Load Testing).
Performance Testing
Definición según la IEEE:
“El grado en que un sistema o componente realiza sus funciones
designadas dentro de las limitaciones dadas, tales como la velocidad,
precisión, o el uso de la memoria.”
Enfocadas en ¿Cuanto? y ¿Que tan rápido? funciona la aplicación, no se hace juicio de la aplicación solo se mide y analiza.
Durante estas pruebas no se busca encontrar errores, pero si se busca
enfocarse en procesos individuales de la aplicación (Base de Datos,
Algoritmos, Red, etc…) en busca de probables cuellos de botella (Les dejo una presentación sobre esto realizada por Scott Barber) y poder determinar una base a considerar en futuros cambios de la aplicación.
Se considera como principal objetivo, predecir anticipadamente
problemas de rendimiento y degradación de recursos del sistema antes de
su paso a producción y así facilitar su corrección.
Puede implicar pruebas cuantitativas realizadas en un laboratorio
(tiempo de respuesta de la aplicación, rendimiento, etc ..) así como
también pruebas cualitativas como confiabilidad, escalabilidad y la
interoperabilidad.
Se espera que las pruebas se realicen sobre una aplicación estable
sonde sea posible la ejecución de los distintos escenarios que se
consideren críticos (telemarketer que necesita información rápidamente para poder realizar la venta) o frecuentes
(lo que implica mayor cantidad de usuarios concurrentes y una necesidad
de disponibilidad de la aplicación) desde el lado del negocio. Además
es vital tener objetivos claros para poder definir correctamente las
métricas que vamos a utilizar y como las vamos a utilizar.
Performance Validation es la etapa donde se apunta a medir si se
cumplen con los requerimientos establecidos por el cliente, donde se
juzga los resultados medidos y analizados para poder determinar el
porque y como solucionar estos. Se estima que en el 80 % de los casos
los problemas de performance se deben a una incorrecta elección de la
arquitectura de la aplicación. Para prevenir estos casos existe PASA (Ver).
Performance Engineering es la etapa final donde se realizan los
cambios necesarios (tunning) para alcanzar lo esperado por la
aplicación, esto puede incluir cambios de codigo, hard o red entre los
principales para luego ser testeado nuevamente.
Les dejo una presentación que realice sobre Performance Testing, pueden bajarla aqui
Conceptos más puntuales:
Availability: El grado en que un sistema es
funcional, estable y eficiente. Se mide por el tiempo de funcionamiento
(el tiempo entre fallos).
Baseline: Referencia del rendimiento del sistema utilizada para comparar el rendimiento contra otras / pruebas de carga.
Capacity Planning: La medición, la previsión y la planificación para el crecimiento del sistema en el tiempo.
Latency: El tiempo de retraso entre el momento en
que se inicia una transacción y el momento en que se completa. A veces
se denomina tiempo de respuesta en forma incorrecta, ya que forma parte
del tiempo de respuesta latency + Processing Time= Response time pero no
es igual al tiempo de respuesta.
Load: La cantidad de demanda o de trabajo en un
sistema. Para una aplicación web, esto significa transacciones de
usuarios concurrentes o conexiones.
Reliability: La capacidad de un sistema para ser
funcional, estable y eficiente, tanto en circunstancias de rutina como
en condiciones adversas.
Scalability: La capacidad de un sistema para crecer a
la par de la carga sobre este o de incrementar su capacidad. Esta se
mide por los cambios de uso de recursos como unidades de trabajo al
crecer en número o tamaño. El último objetivo es que el rendimiento
tenga una escalabilidad lineal, lo que significa que el rendimiento
disminuye a un ritmo constante en relación con la carga.
Test Harness: Un programa informático utilizado para realizar pruebas y recoger los resultados.
Throughput: La tasa de operaciones por unidad de tiempo.
Virtual User: Un usuario creado para aplicar la
carga a un sistema. Cada usuario virtual simula las acciones reales de
los usuarios mediante el envío de peticiones HTTP a un servidor de la
misma manera que un cliente.
Bottleneck: Punto donde la congestión y los retrasos
se producen en una aplicación, ralentizando la tramitación de las
solicitudes y causando que los usuarios experimenten retrasos
inaceptables en el servicio.
Profiling: Recolección de datos sobre el funcionamiento de la aplicación. Ejemplos Jprofiler, JProbe, JXInsight y dynaTrace.
http://josepablosarco.wordpress.com/performance-testing/
No hay comentarios.:
Publicar un comentario