Tutorial de pruebas de rendimiento: qué es, tipos, métricas y amp; Ejemplo

Pruebas de rendimiento

La prueba 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 de rendimiento en la aplicación de software. Es un subconjunto de la ingeniería de rendimiento y también se conoce como "Pruebas de rendimiento".

El enfoque de las pruebas de rendimiento es verificar la

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

En este tutorial, aprenderá:

  • ¿Qué son las pruebas de rendimiento?
  • ¿Por qué realizar pruebas de rendimiento?
  • Tipos de pruebas de rendimiento
  • Problemas comunes de rendimiento
  • Proceso de prueba de rendimiento
  • Métricas de pruebas de rendimiento: parámetros supervisados
  • Ejemplos de casos de prueba de rendimiento
  • Herramientas de prueba de rendimiento
  • Preguntas más frecuentes

¿Por qué realizar pruebas de rendimiento?

Las características y la funcionalidad admitidas 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, son importantes. 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 con respecto a la velocidad, la estabilidad y la escalabilidad. Más importante aún, Performance Testing descubre lo que debe mejorarse antes de que el producto salga al mercado. Sin las pruebas de rendimiento, es probable que el software sufra problemas como: funcionamiento lento mientras varios usuarios lo usan simultáneamente, inconsistencias en diferentes sistemas operativos y poca facilidad de uso.

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

Además, las 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 período prolongado sin desviaciones.

Según Dunn & Bradstreet, el 59% de las empresas de Fortune 500 experimentan aproximadamente 1,6 horas de inactividad por semana. Teniendo en cuenta que la compañía Fortune 500 promedio con un mínimo de 10,000 empleados paga $ 56 por hora, la parte laboral de los costos de tiempo de inactividad para dicha organización sería de $ 896,000 por semana, lo que se traduce en más de $ 46 millones por año.

Se estima que solo un tiempo de inactividad de 5 minutos de Google.com (19 de agosto de 2013) le costará al gigante de las búsquedas hasta 545.000 dólares.

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

Por lo tanto, las pruebas de rendimiento son importantes.

Tipos de pruebas de rendimiento

  • Prueba de carga: verifica la capacidad de la aplicación para funcionar con las cargas de usuario previstas. El objetivo es identificar los cuellos de botella en el rendimiento antes de que la aplicación de software entre en funcionamiento.
  • Pruebas de estrés: implica probar una aplicación con 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.
  • Prueba de resistencia: se realiza para asegurarse de que el software pueda manejar la carga esperada durante un largo período de tiempo.
  • Prueba de picos : prueba la reacción del software a picos grandes y repentinos en la carga generada por los usuarios.
  • Prueba de volumen - Prueba de bajo volumen grande no. de. Los datos se rellenan en una base de datos y se supervisa 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.
  • Pruebas de escalabilidad : el objetivo de las pruebas de escalabilidad es determinar la efectividad de la aplicación de software en la "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 giran en torno a la velocidad, el tiempo de respuesta, el tiempo de carga y la escasa escalabilidad. La velocidad es a menudo uno de los atributos más importantes de una aplicación. Una aplicación de ejecución lenta perderá usuarios potenciales. Las pruebas de rendimiento se realizan para asegurarse de 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:

  • Tiempo de carga prolongado: el tiempo de carga es normalmente el tiempo inicial que tarda una aplicación en iniciarse. Por lo general, esto debe mantenerse al mínimo. Si bien algunas aplicaciones son imposibles de cargar en menos de un minuto, el tiempo de carga debe mantenerse por debajo de unos pocos segundos si es posible.
  • Tiempo de respuesta deficiente: 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.
  • Escalabilidad deficiente: un producto de software tiene 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. Se deben realizar pruebas de carga para asegurarse de que la aplicación pueda manejar el número anticipado de usuarios.
  • Cuellos de botella: los cuellos de botella son obstrucciones en un sistema que degradan el rendimiento general del sistema. El cuello de botella se produce cuando los errores de codificación o los problemas de hardware provocan una disminución del rendimiento bajo ciertas cargas. Los cuellos de botella a menudo se deben a una sección defectuosa del código. La clave para solucionar un problema de cuello de botella es encontrar la sección de código que está causando la desaceleración e intentar solucionarlo allí. Los cuellos de botella generalmente se solucionan arreglando los procesos en ejecución deficiente o agregando hardware adicional. Algunos cuellos de botella de rendimiento comunes son
    • Utilización de CPU
    • Utilización de la memoria
    • Utilización de la red
    • Limitaciones del sistema operativo
    • Uso del disco

Proceso de prueba de rendimiento

La metodología adoptada para las pruebas de rendimiento puede variar ampliamente, pero el objetivo de las pruebas de rendimiento 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

  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 del hardware, el software y las configuraciones de red utilizadas durante la prueba antes de comenzar el proceso de prueba. Ayudará a los evaluadores a crear pruebas más eficientes. También ayudará a identificar los posibles desafíos que los probadores pueden encontrar durante los procedimientos de prueba de rendimiento.
  2. Identificar los criterios de aceptación del rendimiento: esto incluye objetivos y restricciones para el rendimiento, los tiempos de respuesta y la asignación de recursos. También es necesario identificar los criterios de éxito del proyecto fuera de estos objetivos y limitaciones. Los evaluadores deben tener la facultad de establecer criterios y objetivos de rendimiento porque, a menudo, las especificaciones del proyecto no incluirán una variedad suficientemente amplia de parámetros de rendimiento. A veces puede que no haya ninguno. Cuando sea posible, encontrar una aplicación similar para comparar es una buena manera de establecer objetivos de rendimiento.
  3. Pruebas de rendimiento de planificación y diseño: 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 los datos de las pruebas de rendimiento y describir las métricas que se recopilarán.
  4. Configuración del entorno de prueba: prepare el entorno de prueba antes de la ejecución. Además, organice herramientas y otros recursos.
  5. Implementar el diseño de prueba: cree las pruebas de rendimiento de acuerdo con su diseño de prueba.
  6. Ejecute las pruebas: ejecute y supervise las pruebas.
  7. Analice, ajuste y vuelva a probar: consolide, analice y comparta los resultados de las pruebas. Luego, afine y pruebe nuevamente para ver si hay una mejora o disminución en el rendimiento. Dado que las mejoras generalmente se hacen más pequeñas con cada nueva prueba, deténgase cuando la CPU cause un cuello de botella. Entonces puede tener la opción de considerar aumentar la potencia de la CPU.

Métricas de pruebas de rendimiento: parámetros supervisados

Los parámetros básicos monitoreados durante las pruebas de desempeño incluyen:

  • Uso del procesador: cantidad de tiempo que el procesador dedica a ejecutar 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.
  • Ancho de banda: muestra los bits por segundo utilizados por una interfaz de red.
  • Bytes privados: número de bytes que ha asignado un proceso 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 errores de página. Las fallas de página duras ocurren cuando un código que no es del conjunto de trabajo actual se llama desde otro lugar y se recupera de un disco.
  • Fallos de página / segundo: la velocidad general a la que el procesador procesa las páginas de fallos. Esto nuevamente ocurre cuando un proceso requiere código de fuera de su conjunto de trabajo.
  • La CPU se interrumpe por segundo: es el promedio. número de interrupciones de hardware que un procesador recibe y procesa cada segundo.
  • Longitud de la cola de disco: es el promedio. No. 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: velocidad a la que se envían y reciben los bytes en la interfaz, incluidos los caracteres de trama.
  • Tiempo de respuesta: tiempo desde que un usuario ingresa una solicitud hasta que se recibe el primer carácter de la respuesta.
  • Rendimiento: tasa que una computadora o red recibe solicitudes por segundo.
  • Cantidad de agrupación de conexiones: la cantidad de solicitudes de usuario que satisfacen las conexiones agrupadas. Cuantas más solicitudes satisfagan las conexiones en el grupo, mejor será el rendimiento.
  • Máximo de sesiones activas: el número máximo de sesiones que pueden estar activas a la vez.
  • Tasas de aciertos: esto tiene que ver con la cantidad de declaraciones SQL que son manejadas por datos almacenados en caché en lugar de costosas operaciones de E / S. Este es un buen lugar para comenzar a 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 reversión: la cantidad de datos que pueden retroceder en cualquier momento.
  • Bloqueos de bases de datos: el bloqueo de tablas y bases de datos debe supervisarse y ajustarse cuidadosamente.
  • Esperas superiores: se monitorean para determinar qué tiempos de espera se pueden reducir cuando se trata de la rapidez con la que se recuperan los datos de la memoria
  • Recuento de subprocesos: el estado de una aplicación se puede medir por 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. La recolección de basura necesita ser monitoreada para su eficiencia.

Ejemplos de casos de prueba de rendimiento

  • Verifique que el tiempo de respuesta no sea superior a 4 segundos cuando 1000 usuarios acceden al sitio web simultáneamente.
  • 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
  • Verifique el número máximo de usuarios que la aplicación puede manejar antes de que falle.
  • Verifique el tiempo de ejecución de la base de datos cuando se leen / escriben 500 registros simultáneamente.
  • Verifique el uso de la CPU y la memoria de la aplicación y el servidor de la base de datos en condiciones de carga máxima
  • 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, 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 plataforma de soporte, etc. A continuación se muestra una lista de las herramientas de prueba más utilizadas.

  • LoadNinja: está revolucionando la forma en que cargamos las pruebas. Esta herramienta de prueba de carga basada en la nube permite a los equipos grabar y reproducir instantáneamente pruebas de carga integrales, sin una correlación dinámica compleja, y ejecutar estas pruebas de carga en navegadores reales a escala. Los equipos pueden aumentar la cobertura de las pruebas. y reducir el tiempo de prueba de carga en más del 60%.
  • NeoLoad : es la plataforma de pruebas de rendimiento diseñada para DevOps que se integra a la perfección en su canal de entrega continua existente. Con NeoLoad, los equipos realizan pruebas 10 veces más rápido que con las herramientas tradicionales para cumplir con el nuevo nivel de requisitos en todo el ciclo de vida del desarrollo de software Agile, desde las pruebas de carga de componentes hasta las de todo el sistema.
  • 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. Loadrunner cuenta con un generador de usuarios virtual que simula las acciones de usuarios humanos en vivo.
  • Jmeter : una de las herramientas líderes que se utilizan para las pruebas de carga de servidores web y de aplicaciones.

Preguntas más frecuentes

¿Qué aplicaciones deberíamos probar de rendimiento?

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

Por ejemplo, Microsoft Calculator no está basado en cliente-servidor ni funciona con varios usuarios; por lo tanto, no es candidato para pruebas de rendimiento.

¿Cuál es la diferencia entre las pruebas de rendimiento y la ingeniería de rendimiento?

Es importante comprender la diferencia entre las pruebas de rendimiento y la ingeniería de rendimiento. Un entendimiento se comparte a continuación:

La prueba de desempeño es una disciplina que se ocupa de probar y reportar el desempeño actual de una aplicación de software bajo varios parámetros.

La ingeniería de rendimiento es el proceso mediante el cual se prueba y ajusta el software con la intención de obtener 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. En los últimos años, sin embargo, varios grupos de probadores 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 acoplar las pruebas de rendimiento con el ajuste del rendimiento se ha popularizado y ahora lo llamamos ingeniería de rendimiento.

Conclusión

En Ingeniería de Software, las pruebas de rendimiento son necesarias antes de comercializar cualquier producto de software. Garantiza la satisfacción del cliente y protege la inversión de un inversor contra fallas en el producto. Los costos de las pruebas de rendimiento generalmente se compensan con creces con una mayor satisfacción, lealtad y retención del cliente.

Articulos interesantes...