sábado, 3 de marzo de 2012

Pruebas de Rendimiento: Tipos y objetivos

1 Introducción.
El concepto de pruebas de rendimiento de software (pruebas de prestaciones, performance test,....) a veces aparece como un término ambiguo que puede llevar a cometer errores sobre los verdaderos objetivos de este tipo de prueba.

En esta entrada intentaremos definir el concepto de prueba de rendimiento, los objetivos, y veremos los tipos de pruebas de rendimiento que podemos diferenciar en base a los objetivos perseguidos y la fase en la que se ejecutan

2 Pruebas de rendimiento (performance test).

El término de pruebas de rendimiento se encuentra definido dentro de la ISTQB y hace referencia al estudio del comportamiento de un sistema cuando se ve sometido a una carga que actúa de manera concurrente.


Hasta que un sistema no es sometido a carga, no podremos conocer su comportamiento, ya que las pruebas funcionales no suelen incluir niveles altos de concurrencia.

El elemento diferenciador de las pruebas de rendimiento es la existencia de concurrencia en el sistema. Desde este punto de vista, no se consideran pruebas de rendimiento: 
  • Aquellas pruebas encaminadas a optimizar procesos que se ejecutan de manera aislada, aunque sean procesos lentos o pesados que se alarguen en el tiempo
  • Las pruebas de volumen en las que únicamente se prueba como se comporta el sistema cuando funciona o procesa un volumen alto de datos.

3 Tipos de Pruebas de Rendimiento.
Dependiendo del objetivo perseguido podemos diseñar distintos tipos de pruebas.

  • Pruebas de Carga: Intentarán validar que se alcanzan los objetivos de prestaciones a los que se verán sometido el sistema en un entorno productivo. Por ejemplo:
    • Un sistema web debe soportar 3.500 reservas de viajes por hora con un tiempo de respuesta no superior a 6 segundos por página.
    • Se deben alcanzar 25 llamadas al servicio de localización geográfica con un tiempo de respuesta máximo de 2 segundos. 
  • Pruebas de Capacidad: Su objetivo es encontrar los límites de funcionamiento del sistema y detectar el cuello de botella o elemento limitante para poder actuar en caso de ampliación del servicio. Un ejemplo:
    • El consumo de CPU en los servidores de base de datos alcanza el 100% con un nivel de servicio de 3.950 operaciones por hora.
  • Pruebas de estrés: Someten al sistema a una carga por encima de los límites requeridos de funcionamiento. Situaciones de este tipo serían:
    • Puesta a la venta de un producto estrella en un canal de venta
    • Visitas masivas a una web de noticias ante un evento relevante
  • Pruebas de estabilidad: Comprueban que no existe degradación del servicio por un uso prolongado del sistema. 
    •  El sistema debe funcionar sin incidencia ni degradación del sistema durante 24 horas.
  • Pruebas de aislamiento: Provocan concurrencia sobre componentes aislados del sistema para tratar de detectar posibles errores en ellos.
  • Pruebas de regresión de rendimiento: Su objetivo es comprobar si se mantienen los niveles de rendimiento tras un cambio en el sistema, comparando el nivel de rendimiento (tiempo de respuesta, operaciones/hora, etc...) con el que ofrecía con anterioridad.
Será muy importante mostrar los objetivos de las pruebas que realicemos quede especificada en nuestro plan de pruebas de rendimiento para que posteriormente podamos detallar de manera comprensible los resultados en el Informe de Resultados.
4 La planificación de las pruebas de rendimiento
Uno de los problemas que presentan las pruebas de rendimiento es determinar el momento en el que se deben realizar y el entorno en el que realizarlas.

Como cualquier otro proceso de pruebas, cuanto antes comiencen a realizarse las pruebas de rendimiento, mayor será la calidad de nuestro sistema, se minimizará el número de defectos y se producirá un ahorro económico por la detección temprana de errores. 

Una buena estrategia es integrar las pruebas de rendimiento dentro del desarrollo del sistema. El objetivo en cada una de las etapas será diferente.


  • Pruebas Unitarias: Pruebas de rendimiento de los componentes desarrollados. Comprobaciones como:
    • tratamiento concurrente de las peticiones que recibe el módulo, 
    • paralelización en las peticiones, 
    • uso óptimo de los recursos (CPU, memoria, etc..), 
    • comprobación de cierre de los recursos de los que se haga uso (conexiones a la base de datos, etc,..), 
    • comprobación del número de peticiones concurrentes que recibe un componente hardware con diferentes configuraciones.

  • Pruebas de Integración:  Pruebas de rendimiento para comprobar que los diferentes módulos o programas funcionan correctamente de manera integrada. Al igual que en pruebas funcionales se pueden utilizar técnicas de botton-up o top-down. Con estas pruebas también es posible detectar posibles cuellos de botella en los componentes que se van integrando.

  • Pruebas de Sistema: Pruebas  a nivel funcional de nuestro sistema en situaciones de carga ( Altas, consultas, etc...)

  • Pruebas de aceptaciónValidación de los requisitos de rendimiento desde el punto de vista operacional.











12 comentarios:

  1. Gracias!!!

    Muy bien explicado

    ResponderEliminar
    Respuestas
    1. Muchas gracias a ti por tomarte la molestia de dejarnos tu comentario. Esperamos seguir publicando artículos que sean de tu interes.
      Un saludo

      Eliminar
  2. Existen diversas herramientas para las diferentes pruebas de rendimiento pero entre una de las mejores se encuentra Agileload esta espectacular herramienta te ayuda aprender a simular transacciones complicadas y diversos procesos de negocio.Puedes realizar diferentes pruebas de carga de manera fácil.Es una herramienta muy eficaz para satifacer las diferentes necesidades de pruebas de rendimiento .

    ResponderEliminar
  3. Varios puntos explicados con lo necesario y ejemplos muy puntuales que grafican exactamente el concepto. Gracias este tema de las pruebas de rendimiento o carga se les hace muchos problemas a varias personas para explicar.

    Saludos

    ResponderEliminar
  4. Respuestas
    1. Hola Johana, no entendemos muy bien la pregunta. Actualmente no tenemos una versión pdf para las entradas que publicamos.

      Eliminar
    2. Puedes utilizar el Pdfcreator. Es una aplicación que funciona como una impresora pero lo que genera es un PDF y no una impresión de la pagina.

      Eliminar
  5. Las pruebas Unitarias, de sistema de aceptacion e integracion estan contenidas tambien dentro de las pruebas de rendimiento? o son otra categoria?, podrias publicar la bibliografia de la cual te basaste para realizar este post?

    ResponderEliminar
    Respuestas
    1. Hola Juan Carlos,

      Gracias por tu comentario.

      Las pruebas de rendimiento pueden incluirse dentro de las diferentes etapas del desarrollo. Por ejemplo, podemos hacer pruebas de rendimiento sobre un Servicio Web de manera unitaria, antes de integrarle dentro del sistema que le consumirá. Así podremos detectar problemas de rendimiento en etapas tempranas.

      La idea es introducir las pruebas de rendimiento en las diferentes etapas del desarrollo de software, y no esperar al final del proceso para hacelas.

      En cuanto a lo que comentas de la bibliografia, el contenido de esta entrada es fruto de la experiencia que tenemos los autores de este blog en pruebas de rendimiento y prestaciones. No obstante, seguro que encuentras mucha información en la red.

      Espero haberte servido de ayuda.

      Un saludo

      Eliminar
  6. No puedo ver bien la imagen diganme donde la puedo ver bien ????

    ResponderEliminar