Tutorial de pruebas de rendimiento

Prueba de carga

¿Qué son las pruebas de rendimiento?

Test de rendimiento es un proceso de prueba de software que se utiliza para probar la velocidad, el tiempo de respuesta, la estabilidad, la confiabilidad, la escalabilidad y el uso de recursos de una aplicación de software bajo una carga de trabajo particular. El objetivo principal de las pruebas de rendimiento es identificar y eliminar los cuellos de botella en el rendimiento de la aplicación de software. Es un subconjunto de la ingeniería de rendimiento y también se conoce como "Pruebas de rendimiento".

El objetivo de las pruebas de rendimiento es comprobar la calidad de un programa de software.

  • Velocidad – Determina si la aplicación responde rápidamente
  • Escalabilidad – Determina la carga máxima de usuarios que la aplicación de software puede manejar.
  • Estabilidad – Determina si la aplicación es estable bajo cargas variables

¿Por qué realizar pruebas de rendimiento?

Las características y funcionalidades soportadas por un sistema de software no son la única preocupación. El rendimiento de una aplicación de software, como su tiempo de respuesta, confiabilidad, uso de recursos y escalabilidad, sí importa. El objetivo de las pruebas de rendimiento no es encontrar errores sino eliminar los cuellos de botella en el rendimiento.

Las pruebas de rendimiento se realizan para proporcionar a las partes interesadas información sobre su aplicación en cuanto a velocidad, estabilidad y escalabilidad. Más importante aún, las pruebas de rendimiento descubren lo que se debe mejorar antes de que el producto salga al mercado. Sin pruebas de rendimiento, es probable que el software sufra problemas como: funcionamiento lento mientras varios usuarios lo utilizan simultáneamente, inconsistencias entre diferentes sistemas operativos y poca usabilidad.

Test de rendimiento

Las pruebas de rendimiento determinarán si su software cumple con los requisitos de velocidad, escalabilidad y estabilidad bajo las cargas de trabajo esperadas. Las aplicaciones enviadas al mercado con métricas de rendimiento deficientes debido a pruebas de rendimiento deficientes o inexistentes probablemente obtengan una mala reputación y no cumplan con los objetivos de ventas esperados.

También, aplicaciones de misión crítica como los programas de lanzamiento espacial o los equipos médicos que salvan vidas deben someterse a pruebas de rendimiento para garantizar que funcionen durante un largo período sin desviaciones.

Según Dunn & Bradstreet, el 59 % de las empresas de Fortune 500 experimentan aproximadamente 1.6 horas de inactividad cada semana. Si se tiene en cuenta que la empresa promedio de Fortune 500 con un mínimo de 10,000 56 empleados paga 896,000 dólares por hora, la parte laboral de los costos de inactividad para una organización de este tipo ascendería a 46 XNUMX dólares semanales, lo que se traduce en más de XNUMX millones de dólares al año.

Sólo un 5 minutos de inactividad Se estima que Google.com (19 de agosto de 13) le costará al gigante de las búsquedas tanto como $ 545,000.

Se estima que las empresas perdieron valor de ventas $ 1100 por segundo debido a una reciente Amazon Interrupción del servicio web.

Por tanto, las pruebas de rendimiento son importantes. Para ayudarle con este proceso, consulte esta lista de herramientas de prueba de rendimiento.

Tipos de pruebas de rendimiento

Existen principalmente seis tipos de pruebas de rendimiento en las pruebas de software, que se explican a continuación.
  • Prueba de carga - Comprueba la capacidad de la aplicación para funcionar bajo cargas de usuario anticipadas. El objetivo es identificar cuellos de botella en el rendimiento antes de que la aplicación de software entre en funcionamiento.
  • Prueba de esfuerzo Implica probar una aplicación bajo cargas de trabajo extremas para ver cómo maneja el alto tráfico o el procesamiento de datos. El objetivo es identificar el punto de ruptura de una aplicación.
  • Pruebas de resistencia – se realiza para garantizar que el software pueda manejar la carga esperada durante un largo período de tiempo.
  • Prueba de picos – prueba la reacción del software ante grandes picos repentinos en la carga generada por los usuarios.
  • Pruebas de volumen – Bajo Prueba de Volumen grande no. de. Los datos se completan en una base de datos y se monitorea el comportamiento general del sistema de software. El objetivo es comprobar el rendimiento de la aplicación de software en diferentes volúmenes de bases de datos.
  • Prueba de escalabilidad – El objetivo de las pruebas de escalabilidad es determinar la eficacia de la aplicación de software en su “ampliación” para soportar un aumento en la carga de usuarios. Ayuda a planificar la adición de capacidad a su sistema de software.

Problemas comunes de rendimiento

La mayoría de los problemas de rendimiento tienen que ver con la velocidad, el tiempo de respuesta, el tiempo de carga y la escasa escalabilidad. La velocidad suele ser uno de los atributos más importantes de una aplicación. Una aplicación que se ejecuta con lentitud perderá usuarios potenciales. Las pruebas de rendimiento garantizan que una aplicación se ejecute lo suficientemente rápido como para mantener la atención y el interés del usuario. Eche un vistazo a la siguiente lista de problemas de rendimiento comunes y observe cómo la velocidad es un factor común en muchos de ellos:

  • Largo tiempo de carga – El tiempo de carga normalmente es el tiempo inicial que tarda una aplicación en iniciarse. Por lo general, esto debería mantenerse al mínimo. Si bien es imposible cargar algunas aplicaciones en menos de un minuto, el tiempo de carga debe mantenerse por debajo de unos pocos segundos si es posible.
  • Mal tiempo de respuesta – El tiempo de respuesta es el tiempo que transcurre desde que un usuario ingresa datos en la aplicación hasta que la aplicación genera una respuesta a esa entrada. Generalmente, esto debería ser muy rápido. Nuevamente, si un usuario tiene que esperar demasiado, pierde interés.
  • Poca escalabilidad – Un producto de software adolece de una escalabilidad deficiente cuando no puede manejar el número esperado de usuarios o cuando no se adapta a una gama suficientemente amplia de usuarios. Prueba de carga Se debe hacer para estar seguro de que la aplicación puede manejar la cantidad anticipada de usuarios.
  • Cuellos de botella – Los cuellos de botella son obstrucciones en un sistema que degradan el rendimiento general del mismo. Los cuellos de botella se producen cuando errores de codificación o problemas de hardware provocan una disminución en el rendimiento bajo ciertas cargas. Los cuellos de botella suelen deberse a una sección de código defectuosa. La clave para solucionar un problema de cuello de botella es encontrar la sección de código que causa la desaceleración e intentar solucionarlo allí. Los cuellos de botella generalmente se solucionan arreglando procesos que se ejecutan deficientemente o agregando hardware adicional. Alguno cuellos de botella de rendimiento comunes están
    • Utilización de la CPU
    • Utilización de la memoria
    • Utilización de la red
    • OperaLimitaciones del sistema
    • Uso del disco

Cómo hacer pruebas de rendimiento

La metodología adoptada para las pruebas de desempeño puede variar ampliamente, pero el objetivo de las pruebas de desempeño sigue siendo el mismo. Puede ayudar a demostrar que su sistema de software cumple con ciertos criterios de rendimiento predefinidos. O puede ayudar a comparar el rendimiento de dos sistemas de software. También puede ayudar a identificar partes de su sistema de software que degradan su rendimiento.

A continuación se muestra un proceso genérico sobre cómo realizar pruebas de rendimiento.

Proceso de prueba de rendimiento
Proceso de prueba de rendimiento

Paso 1) Identifique su entorno de prueba

Conozca su entorno de prueba físico, el entorno de producción y las herramientas de prueba disponibles. Comprenda los detalles de las configuraciones de hardware, software y red utilizadas durante las pruebas antes de comenzar el proceso de prueba. Esto ayudará a los evaluadores a crear pruebas más eficientes. También ayudará a identificar posibles desafíos que los evaluadores pueden encontrar durante los procedimientos de prueba de rendimiento.

Paso 2) Identificar los criterios de aceptación del desempeño

Esto incluye objetivos y limitaciones de rendimiento, tiempos de respuesta y asignación de recursos. También es necesario identificar criterios de éxito del proyecto fuera de estos objetivos y limitaciones. Los evaluadores deben estar facultados para establecer criterios y objetivos de desempeño porque a menudo las especificaciones del proyecto no incluirán una variedad suficientemente amplia de puntos de referencia de desempeño. A veces puede que no haya ninguno en absoluto. Cuando sea posible, encontrar una aplicación similar con la que comparar es una buena manera de establecer objetivos de rendimiento.

Paso 3) Planificar y diseñar pruebas de rendimiento

Determine cómo es probable que varíe el uso entre los usuarios finales e identifique escenarios clave para probar todos los casos de uso posibles. Es necesario simular una variedad de usuarios finales, planificar datos de prueba de rendimiento y delinear qué métricas se recopilarán.

Paso 4) Configurar el entorno de prueba

Prepare el entorno de prueba antes de la ejecución. Además, organice herramientas y otros recursos.

Paso 5) Implementar el diseño de prueba

Cree las pruebas de rendimiento de acuerdo con su diseño de prueba.

Paso 6) Ejecute las pruebas

Ejecutar y monitorear las pruebas.

Paso 7) Analizar, ajustar y volver a probar

Consolide, analice y comparta resultados de pruebas. Luego ajuste y pruebe nuevamente para ver si hay una mejora o una disminución en el rendimiento. Dado que las mejoras generalmente disminuyen con cada nueva prueba, deténgase cuando el cuello de botella sea causado por la CPU. Entonces es posible que tengas la opción de considerar aumentar la potencia de la CPU.

Métricas de prueba de rendimiento: parámetros monitoreados

Los parámetros básicos monitoreados durante las pruebas de rendimiento incluyen:

métricas de prueba de rendimiento

  • Uso del procesador – una cantidad de tiempo que el procesador pasa ejecutando subprocesos que no están inactivos.
  • Uso de memoria - Cantidad de memoria física disponible para los procesos en una computadora.
  • Tiempo de disco – Cantidad de tiempo que el disco está ocupado ejecutando una solicitud de lectura o escritura.
  • Banda ancha - Muestra los bits por segundo utilizados por una interfaz de red.
  • Bytes privados – Número de bytes que un proceso ha asignado y que no se pueden compartir entre otros procesos. Se utilizan para medir el uso y las pérdidas de memoria.
  • Memoria comprometida – cantidad de memoria virtual utilizada.
  • Páginas de memoria/segundo – número de páginas escritas o leídas en el disco para resolver fallas de páginas duras. Los fallos de página difíciles se producen cuando se llama a un código que no pertenece al conjunto de trabajo actual desde otro lugar y se recupera de un disco.
  • Errores de página/segundo – la velocidad general a la que el procesador procesa las páginas de error. Esto nuevamente ocurre cuando un proceso requiere código externo a su conjunto de trabajo.
  • Interrupciones de CPU por segundo – es el número promedio de interrupciones de hardware que un procesador recibe y procesa cada segundo.
  • Longitud de la cola de disco – es el número promedio de solicitudes de lectura y escritura en cola para el disco seleccionado durante un intervalo de muestra.
  • Longitud de la cola de salida de la red – longitud de la cola de paquetes de salida en paquetes. Cualquier valor superior a dos significa un retraso y es necesario detener los cuellos de botella.
  • Total de bytes de red por segundo – Tasa de qué bytes se envían y reciben en la interfaz, incluidos los caracteres de encuadre.
  • Tiempo de respuesta - Tiempo desde que un usuario ingresa una solicitud hasta que se recibe el primer carácter de la respuesta.
  • Rendimiento – Calificar una computadora o red que recibe solicitudes por segundo.
  • Cantidad de agrupación de conexiones – el número de solicitudes de usuarios que satisfacen las conexiones agrupadas. Cuantas más solicitudes cumplan las conexiones en el grupo, mejor será el rendimiento.
  • Sesiones activas máximas – el número máximo de sesiones que pueden estar activas a la vez.
  • Proporciones de aciertos – Esto tiene que ver con el número de SQL declaraciones que se manejan mediante datos almacenados en caché en lugar de costosas operaciones de E/S. Este es un buen punto de partida para resolver problemas de cuellos de botella.
  • Golpes por segundo – el no. de visitas a un servidor web durante cada segundo de una prueba de carga.
  • Segmento de retroceso – la cantidad de datos que se pueden revertir en cualquier momento.
  • Bloqueos de base de datos – El bloqueo de tablas y bases de datos debe ser monitoreado y ajustado cuidadosamente.
  • Las mejores esperas – son monitoreados para determinar qué tiempos de espera se pueden reducir cuando se trata de qué tan rápido se recuperan los datos de la memoria
  • Número de hilos – El estado de una aplicación se puede medir mediante el no. de subprocesos que se están ejecutando y actualmente activos.
  • Recolección de basura - Tiene que ver con devolver la memoria no utilizada al sistema. Recolección de basura Es necesario monitorear su eficiencia.

Ejemplo de casos de prueba de pruebas de rendimiento

  • Caso de prueba 01: Verificar que el tiempo de respuesta no sea mayor a 4 segundos cuando 1000 usuarios acceden al sitio web simultáneamente.
  • Caso de prueba 02: Verifique que el tiempo de respuesta de la aplicación bajo carga esté dentro de un rango aceptable cuando la conectividad de la red sea lenta
  • Caso de prueba 03: Verifique la cantidad máxima de usuarios que la aplicación puede manejar antes de que falle.
  • Caso de prueba 04: Verifique el tiempo de ejecución de la base de datos cuando se leen/escriben 500 registros simultáneamente.
  • Caso de prueba 05: Verifique el uso de CPU y memoria de la aplicación y del servidor de base de datos en condiciones de carga máxima
  • Caso de prueba 06: Verifique el tiempo de respuesta de la aplicación en condiciones de carga baja, normal, moderada y pesada.

Durante la ejecución de la prueba de rendimiento real, los términos vagos como rango aceptable, carga pesada, etc. se reemplazan por números concretos. Los ingenieros de rendimiento establecen estos números según los requisitos comerciales y el panorama técnico de la aplicación.

Herramientas de prueba de rendimiento

Existe una amplia variedad de herramientas de prueba de rendimiento disponibles en el mercado. La herramienta que elija para las pruebas dependerá de muchos factores, como los tipos de protocolo admitidos, el costo de la licencia, los requisitos de hardware, la compatibilidad de la plataforma, etc. A continuación se muestra una lista de las herramientas de prueba más utilizadas.

  • HP LoadRunner es la herramienta de prueba de rendimiento más popular del mercado actual. Esta herramienta es capaz de simular cientos de miles de usuarios, sometiendo aplicaciones a cargas reales para determinar su comportamiento bajo las cargas esperadas. corredor de carga cuenta con un generador de usuarios virtuales que simula las acciones de usuarios humanos reales.
  • Jmetro – una de las herramientas líderes utilizadas para pruebas de carga de servidores web y de aplicaciones.

Preguntas Frecuentes

Las pruebas de rendimiento siempre se realizan únicamente para sistemas basados ​​en cliente-servidor. Esto significa que cualquier aplicación que no tenga una arquitectura basada en cliente-servidor no debe requerir pruebas de rendimiento.

Por ejemplo, Microsoft Calculator no está basado en cliente-servidor ni ejecuta múltiples usuarios; por lo tanto, no es candidato para las pruebas de rendimiento.

Prueba de rendimiento

Es importante comprender la diferencia entre pruebas de rendimiento e ingeniería de rendimiento. A continuación se comparte un entendimiento:

Test de rendimiento es una disciplina que se ocupa de pruebas e informes el rendimiento actual de una aplicación de software bajo varios parámetros.

Ingeniería de rendimiento Es el proceso mediante el cual se prueba y ajusta el software con la intención de lograr el rendimiento requerido. Este proceso tiene como objetivo optimizar el rasgo de rendimiento de la aplicación más importante, es decir, la experiencia del usuario.

Históricamente, las pruebas y el ajuste han sido ámbitos claramente separados y, a menudo, en competencia. Sin embargo, en los últimos años, varios grupos de evaluadores y desarrolladores han colaborado de forma independiente para crear equipos de ajuste. Debido a que estos equipos han tenido un éxito significativo, el concepto de combinar las pruebas de rendimiento con el ajuste del rendimiento se ha popularizado y ahora lo llamamos ingeniería de rendimiento.

Conclusión

In Ingeniería de SoftwareLas pruebas de rendimiento son necesarias antes de comercializar cualquier producto de software. Garantiza la satisfacción del cliente y protege la inversión del inversor contra fallos del producto. Los costos de las pruebas de desempeño generalmente se compensan con creces con una mayor satisfacción, lealtad y retención del cliente.