Performance Testing

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.

Anuncios

15 Comentarios Agrega el tuyo

  1. M@rce dice:

    Excelente texto de introducción. Gracias por el aporte.
    Saludos.

    Me gusta

  2. Camilo Contreras dice:

    Excelente, gracias.

    Me gusta

  3. Pedro Daniel dice:

    Muy bueno!!!!
    Nos ayudarías mucho si pudieras subir el glosario completo de la ISTQB en castellano o si existe un link compartelo por favor, muchas gracias!!!

    Me gusta

    1. Pedro,

      Te paso el link del glosario del ISTQB en Ingles. Si bien es un glosario más general tal vez te sea de ayuda.

      Saludos,

      José

      Me gusta

  4. Javier Ricardo Charry dice:

    Muy bueno, gracias como siempre por el aporte.

    Me gusta

  5. Javier Ricardo Charry dice:

    Hola!!! No volviste a postear nada, estas bien verdad? Espero que todo bien por tu vida, ya que me gustan mucho tus articulos.

    Saludos desde Colombia-Bogotá D.C

    Me gusta

    1. Javier,

      Gracias por la preocupación!!!

      En realidad estoy con bastante trabajo (por suerte 😀 ) y no he podido dedicarle el tiempo que quisiera al blog, en estos días voy a estar posteando sobre Selenium 2 un tutorial que vengo armando de a poco ;).

      Muchas Gracias por el apoyo,

      José

      Me gusta

  6. Juan W. dice:

    Recién hoy descubrí tu Blog, me parecen muy interesantes los temas que tratas, estaré por aquí seguido haciendo lectura de tus posts.

    Un saludos cordial y mis mas sinceras felicitaciones

    Me gusta

    1. Bienvenido!!!

      Me gusta

  7. Juan dice:

    Muy buen blog, me gustaría que que pudieran comentar acerca de herramientas de LOAD TEST
    Gracias

    Me gusta

    1. Juan,

      Puedes encontrar mucha informacion sobre JMeter en el blog:
      * https://josepablosarco.wordpress.com/2009/01/12/jmeter-performance-testing-con-jmeter-parte-1/

      Espero que sea de ayuda.

      Saludos!

      José Pablo

      Me gusta

  8. Carolina dice:

    Excelente! En el dia de ayer descubri tu blog y me parece muy bueno, me sirven un monton de tus post como herramientas, GRACIAS!

    Me gusta

  9. Eduardo dice:

    Buenas tardes,

    Una pregunta para saber si se puede especificar con Jmetter,

    necesitariamos realizar un servidor en el que se reciban peticiones https (no que las generemos) y poder contestar a dichas peticiones recibidas.

    Si se puede me pueden reenviar al link correspondiente, no doy con ello en la ayuda.

    No queremos grabar un escenario y luego reproducirlo como hemos hecho con el Servidor Proxy Http.

    Muchas Gracias por adelantado

    Me gusta

    1. Hola Eduardo,

      Desconozco si es posible el escenario que planteas.

      Saludos!

      José

      Me gusta

  10. Arturo Cerecero dice:

    Hola Saludos desde Mexico Colega!

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.