load testing complete guide
Una guía completa de pruebas de carga para principiantes:
En este tutorial, aprenderemos por qué realizamos pruebas de carga, qué se logra con ella, arquitectura, cuál es el enfoque a seguir para ejecutar con éxito una prueba de carga, cómo configurar un entorno de prueba de carga, las mejores prácticas, junto con las mejores herramientas de prueba de carga disponibles en el mercado.
Hemos oído hablar de los tipos de pruebas funcionales y no funcionales. En las pruebas no funcionales, tenemos diferentes tipos de pruebas como pruebas de rendimiento, pruebas de seguridad, pruebas de interfaz de usuario, etc.
Por lo tanto, las pruebas de carga son un tipo de prueba no funcional que es un subconjunto de las pruebas de rendimiento.
Por lo tanto, cuando decimos que estamos probando el rendimiento de una aplicación, ¿qué estamos probando aquí? Estamos probando la aplicación para carga, volumen, capacidad, estrés, etc.
Lo que vas a aprender:
- ¿Qué es la prueba de carga?
- Arquitectura de prueba de carga
- ¿Por qué realizar pruebas de carga?
- Ambiente
- Acercarse
- Mejores prácticas
- Conclusión
- Lectura recomendada
¿Qué es la prueba de carga?
La prueba de carga es un subconjunto de la prueba de rendimiento, donde probamos la respuesta del sistema bajo diferentes condiciones de carga simulando que varios usuarios acceden a la aplicación al mismo tiempo. Esta prueba suele medir la velocidad y la capacidad de la aplicación.
Así, siempre que modificamos la carga, monitorizamos el comportamiento del sistema en diversas condiciones.
Ejemplo :Supongamos que el requisito de nuestro cliente para una página de inicio de sesión es de 2 a 5 segundos y que estos 2 a 5 segundos deben ser coherentes hasta que la carga sea de 5000 usuarios. Entonces, ¿qué debemos observar escuchar? ¿Es solo la capacidad de manejo de carga del sistema o es solo el requisito de tiempo de respuesta?
La respuesta es ambas. Queremos un sistema que pueda manejar una carga de 5000 usuarios con un tiempo de respuesta de 2 a 5 segundos para todos los usuarios concurrentes.
Entonces, ¿qué se entiende por usuario concurrente y usuario virtual?
Los usuarios concurrentes son aquellos que inician sesión en la aplicación y, al mismo tiempo, realizan un conjunto de actividades juntos y cierran la sesión de la aplicación al mismo tiempo. Por otro lado, los usuarios virtuales simplemente entran y salen del sistema independientemente de las actividades de otros usuarios.
Arquitectura de prueba de carga
En el siguiente diagrama podemos ver cómo los diferentes usuarios acceden a la aplicación. Aquí, cada usuario realiza una solicitud a través de Internet, que luego pasa a través de un firewall.
Después del firewall, tenemos un equilibrador de carga que distribuye la carga a cualquiera de los servidores web, y luego pasa al servidor de aplicaciones y luego al servidor de la base de datos donde obtiene la información necesaria en función de la solicitud del usuario.
Las pruebas de carga se pueden realizar tanto manualmente como con una herramienta. Pero no se recomienda la prueba de carga manual, ya que no probamos la aplicación para una carga menor.
Ejemplo: Supongamos que queremos probar una aplicación de compras en línea para ver el tiempo de respuesta de la aplicación para cada usuario. Haga clic en Paso 1: URL de inicio, tiempo de respuesta, inicie sesión en la aplicación y anote el tiempo de respuesta, etc. producto, agregar al carrito, realizar el pago y cerrar la sesión. Todo esto debe hacerse para 10 usuarios.
Entonces, ahora, cuando necesitamos probar la carga de la aplicación para 10 usuarios, podemos lograrlo colocando la carga manualmente en 10 usuarios físicos de diferentes máquinas en lugar de usar una herramienta. En este escenario, es recomendable realizar una prueba de carga manual en lugar de invertir en una herramienta y configurar un entorno para la herramienta.
Mientras que imaginemos si necesitamos realizar una prueba de carga para 1500 usuarios, entonces necesitamos automatizar la prueba de carga utilizando cualquiera de las herramientas disponibles en función de las tecnologías en las que se construye la aplicación y también en función del presupuesto que tenemos para el proyecto.
Si tenemos un presupuesto, podemos optar por herramientas comerciales como Load Runner, pero si no tenemos mucho presupuesto, podemos optar por herramientas de código abierto como JMeter, etc.
qué dbms se ejecuta en una pc
Ya sea una herramienta comercial o una herramienta de código abierto, los detalles deben compartirse con el cliente antes de finalizar la herramienta. Por lo general, se prepara una prueba de concepto, donde generamos un script de muestra usando la herramienta y mostramos los informes de muestra al cliente para que apruebe la herramienta antes de finalizarla.
En las pruebas de carga automatizadas, reemplazamos a los usuarios con la ayuda de una herramienta de automatización, que imita las acciones del usuario en tiempo real. Automatizando la carga podemos ahorrar tanto tiempo como recursos.
A continuación se muestra el diagrama que muestra cómo se reemplazan los usuarios mediante una herramienta.
¿Por qué realizar pruebas de carga?
Supongamos que hay un sitio web de compras en línea que funciona bastante bien durante los días hábiles normales, es decir, los usuarios pueden iniciar sesión en la aplicación, navegar por las diferentes categorías de productos, seleccionar productos, agregar artículos al carrito, pagar y cerrar sesión dentro de un rango aceptable y no hay errores de página ni tiempos de respuesta enormes.
Mientras tanto, llega un día pico, es decir, digamos el día de Acción de Gracias y hay miles de usuarios que han iniciado sesión en el sistema, el sistema se bloquea de repente y los usuarios experimentan una respuesta muy lenta, algunos ni siquiera pudieron inicie sesión en el sitio, algunos no pudieron agregar al carrito y algunos no pudieron pagar.
Por lo tanto, en este gran día, la compañía tuvo que enfrentar una gran pérdida, ya que perdió muchos clientes y también muchos negocios. Todo esto sucedió simplemente porque no predijeron la carga de usuarios para los días pico, incluso si hubieran predicho que no se realizó una prueba de carga en el sitio web de la empresa, por lo que no saben cuánta carga podrá manejar la aplicación. en los días pico.
Por lo tanto, para manejar tales situaciones y para superar enormes ingresos, es recomendable realizar pruebas de carga para este tipo de aplicaciones.
- Las pruebas de carga ayudan a construir sistemas fuertes y confiables.
- El cuello de botella en el sistema se identifica con mucha antelación antes de que la aplicación entre en funcionamiento.
- Ayuda a identificar la capacidad de la aplicación.
¿Qué se logra durante una prueba de carga?
Con una prueba de carga adecuada, podemos tener una comprensión exacta de lo siguiente:
- El número de usuarios que el sistema puede manejar o al que puede escalar.
- El tiempo de respuesta de cada transacción.
- ¿Cómo se comporta cada componente de todo el sistema bajo Carga, es decir, componentes del servidor de aplicaciones, componentes del servidor web, componentes de la base de datos, etc.?
- ¿Qué configuración de servidor es mejor para manejar la carga?
- Si el hardware existente es suficiente o si se necesita hardware adicional.
- Se identifican cuellos de botella como la utilización de la CPU, el uso de la memoria, los retrasos en la red, etc.
Ambiente
Necesitamos un entorno de pruebas de carga dedicado para realizar nuestras pruebas. Porque la mayoría de las veces el entorno de prueba de carga será el mismo que el entorno de producción y también los datos disponibles en el entorno de prueba de carga serán los mismos que los de producción, aunque no son los mismos datos.
Habrá múltiples entornos de prueba como el entorno SIT, el entorno QA, etc., estos entornos no son la misma producción porque, a diferencia de las pruebas de carga, no necesitan tantos servidores ni tantos datos de prueba para realizar pruebas funcionales o pruebas de integración.
Ejemplo:
En un entorno de producción, tenemos 3 servidores de aplicaciones, 2 servidores web y 2 servidores de bases de datos. En QA, solo tenemos 1 servidor de aplicaciones, 1 servidor web y 1 servidor de base de datos. Por lo tanto, si realizamos una prueba de carga en el entorno de control de calidad que no es igual a la producción, nuestras pruebas no son válidas y también son incorrectas y, por lo tanto, no podemos seguir estos resultados.
Por lo tanto, intente siempre tener un entorno dedicado para las pruebas de carga que sea similar al de un entorno de producción.
Además, a veces tenemos aplicaciones de terceros a las que nuestro sistema llamará, por lo tanto, en tales casos, podemos usar stubs, ya que no siempre podemos trabajar con proveedores externos para actualizar datos o cualquier otro problema o soporte.
Intente tomar una instantánea del entorno una vez que esté listo para que, siempre que desee reconstruir el entorno, pueda utilizar esta instantánea, que ayudaría con la administración del tiempo. Hay algunas herramientas que están disponibles en el mercado para configurar el entorno como Puppet, Docker, etc.
Acercarse
Antes de comenzar la prueba de carga, debemos comprender si ya se ha realizado alguna prueba de carga en el sistema o no. Si se realizó alguna prueba de carga antes, entonces necesitamos saber cuál fue el tiempo de respuesta, las métricas de cliente y servidor recopiladas, cuál fue la capacidad de carga del usuario, etc.
Además, necesitamos información sobre cuánto es la capacidad actual de manejo de aplicaciones. Si se trata de una nueva aplicación, debemos comprender los requisitos, cuál es la carga objetivo, cuál es el tiempo de respuesta esperado y si es realmente alcanzable o no.
Si es una aplicación existente, puede obtener los requisitos de carga y los patrones de acceso de los usuarios de los registros del servidor. Pero si se trata de una aplicación nueva, debe comunicarse con el equipo comercial para obtener toda la información.
Una vez que tenemos los requisitos, necesitamos identificar cómo vamos a ejecutar la prueba de carga. ¿Se hace manualmente o con herramientas? Hacer una prueba de carga manualmente requiere muchos recursos y también es muy costoso. Además, repetir la prueba una y otra vez también será difícil.
Por lo tanto, para superar esto, podemos utilizar herramientas de código abierto o herramientas comerciales. Las herramientas de código abierto están disponibles de forma gratuita, es posible que estas herramientas no tengan todas las características como las otras herramientas comerciales, pero si el proyecto tiene una restricción presupuestaria, entonces podemos optar por herramientas de código abierto.
Si bien las herramientas comerciales tienen muchas características, admiten muchos protocolos y son muy fáciles de usar.
Nuestro enfoque de prueba de carga será el siguiente:
# 1) Identifique los criterios de aceptación de la prueba de carga
Por ejemplo:
- El tiempo de respuesta de la página de inicio de sesión no debe ser superior a 5 segundos, incluso durante las condiciones de carga máxima.
- La utilización de la CPU no debe superar el 80%.
- El rendimiento del sistema debe ser de 100 transacciones por segundo.
# 2) Identifique los escenarios comerciales que deben probarse.
No pruebe todos los flujos, intente comprender los principales flujos comerciales que se espera que ocurran en la producción. Si se trata de una aplicación existente, podemos obtener su información de los registros del servidor del entorno de producción.
Si se trata de una aplicación de nueva creación, entonces debemos trabajar con los equipos comerciales para comprender los patrones de flujo, el uso de la aplicación, etc. A veces, el equipo del proyecto llevará a cabo talleres para brindar una descripción general o detalles sobre cada componente de la aplicación.
Necesitamos asistir al taller de aplicación y anotar toda la información requerida para realizar nuestra prueba de carga.
# 3) Modelado de carga de trabajo
Una vez que tenemos los detalles sobre los flujos comerciales, los patrones de acceso de los usuarios y el número de usuarios, necesitamos diseñar la carga de trabajo de tal manera que imite la navegación del usuario real en producción o como se espera que sea en el futuro una vez que la aplicación estará en producción.
Los puntos clave para recordar al diseñar un modelo de carga de trabajo es ver cuánto tiempo tomará completar un flujo de negocios en particular. Aquí debemos asignar el tiempo de reflexión de tal manera que el usuario navegue por la aplicación de una manera más realista.
El patrón de carga de trabajo generalmente será con una rampa ascendente, una rampa descendente y un estado estable. Debemos cargar lentamente el sistema y, por lo tanto, se utilizan la rampa ascendente y descendente. El estado estable será normalmente una prueba de carga de una hora con una rampa ascendente de 15 min y una rampa descendente de 15 min.
Tomemos un ejemplo del modelo de carga de trabajo:
Descripción general de la aplicación: supongamos que se trata de una compra en línea, donde los usuarios iniciarán sesión en la aplicación y tendrán una amplia variedad de vestidos para comprar, y podrán navegar por cada producto.
Para ver los detalles de cada producto, deben hacer clic en el producto. Si les gusta el costo y la marca del producto, pueden agregarlo al carrito y comprar el producto al finalizar la compra y realizar el pago.
A continuación se muestra una lista de escenarios:
- Navegar - Aquí, el usuario inicia la aplicación, inicia sesión en la aplicación, navega por diferentes categorías y cierra sesión en la aplicación.
- Examinar, Vista del producto, Agregar al carrito - Aquí, el usuario inicia sesión en la aplicación, navega por diferentes categorías, ve los detalles del producto, agrega el producto al carrito y cierra la sesión.
- Navegar, Ver producto, Agregar al carrito y pagar - En este escenario, el usuario inicia sesión en la aplicación, navega por diferentes categorías, ve los detalles del producto, agrega el producto al carrito, realiza el pago y cierra la sesión.
- Navegar, Vista del producto, Agregar al carrito Pagar y realizar el pago - Aquí, el usuario inicia sesión en la aplicación, navega por diferentes categorías, ve los detalles del producto, agrega el producto al carrito, realiza el pago, realiza el pago y cierra la sesión.
S.No | Flujo de negocios | Numero de transacciones | Carga de usuario virtual | Tiempo de respuesta (seg) | % Tasa de fallos permitida | Transacciones por hora |
---|---|---|---|---|---|---|
1 | Navegar | 17 | 1600 | 3 | Menos del 2% | 96000 |
2 | Examinar, Vista del producto, Agregar al carrito | 17 | 200 | 3 | Menos del 2% | 12000 |
3 | Navegar, Ver producto, Agregar al carrito y pagar | 18 | 120 | 3 | Menos del 2% | 7200 |
4 | Navegar, Vista del producto, Agregar al carrito Pagar y realizar el pago | 20 | 80 | 3 | Menos del 2% | 4800 |
Los valores anteriores se derivaron en base a los siguientes cálculos:
- Transacciones por hora = Número de usuarios * Transacciones realizadas por un solo usuario en una hora.
- El número de usuarios = 1600.
- El número total de transacciones en el escenario de exploración = 17.
- Tiempo de respuesta para cada transacción = 3.
- Tiempo total para que un solo usuario complete 17 transacciones = 17 * 3 = 51 redondeado a 60 segundos (1 min).
- Transacciones por hora = 1600 * 60 = 96000 transacciones.
# 4) Diseñe las pruebas de carga– La prueba de carga debe diseñarse con los datos que recopilamos hasta ahora, es decir, los flujos comerciales, la cantidad de usuarios, los patrones de usuario, las métricas que se recopilarán y analizarán. Además, las pruebas deben diseñarse de una manera mucho más realista.
# 5) Ejecutar prueba de carga - Antes de ejecutar la prueba de carga, asegúrese de que la aplicación esté en funcionamiento. El entorno de prueba de carga está listo. La aplicación está probada funcionalmente y es estable.
Compruebe los ajustes de configuración del entorno de prueba de carga. Debería ser el mismo que el entorno de producción. Asegúrese de que todos los datos de la prueba estén disponibles. Asegúrese de agregar los contadores necesarios para monitorear el rendimiento del sistema durante la ejecución de la prueba.
Comience siempre con una carga baja y aumente gradualmente la carga. Nunca comience con la carga completa y rompa el sistema.
# 6) Analice los resultados de la prueba de carga - Tener una prueba de referencia para comparar siempre con las otras ejecuciones de prueba. Reúna las métricas y los registros del servidor después de la ejecución de la prueba para encontrar los cuellos de botella.
Algunos proyectos utilizan herramientas de supervisión del rendimiento de las aplicaciones para supervisar el sistema durante la ejecución de la prueba; estas herramientas de APM ayudan a identificar la causa raíz más fácilmente y ahorran mucho tiempo. Estas herramientas son muy fáciles de encontrar la causa raíz del cuello de botella, ya que tienen una visión amplia para identificar dónde está el problema.
Algunas de las herramientas de APM del mercado incluyen DynaTrace, Wily Introscope, App Dynamics, etc.
# 7) Informes - Una vez que se complete la ejecución de prueba, recopile todas las métricas y envíe el informe de resumen de la prueba al equipo interesado con sus observaciones y recomendaciones.
Mejores prácticas
A continuación se enumeran algunas de las mejores prácticas de las pruebas de carga:
#1) Compruebe siempre la estabilidad de la aplicación antes de iniciar una prueba de carga. La aplicación debe estar firmada funcionalmente estable por el equipo de pruebas funcionales y todos los defectos principales deben ser corregidos y probados antes de que la compilación se copie en el entorno de prueba de carga.
#2) Asegúrese de que el entorno de prueba de carga sea una réplica o esté cerca del entorno de producción, incluida la cantidad de servidores, equilibradores de carga, configuraciones de servidor y firewalls.
#3) Compruebe si los datos de prueba son únicos y si tenemos todos los datos de prueba copiados en el entorno de carga antes de realizar una prueba de carga.
#4) Diseñe los escenarios de prueba de tal manera que imiten la acción del usuario en tiempo real que ocurre en la producción.
#5) Diseñe la carga de trabajo en función de las cargas de los usuarios de producción y los flujos comerciales y, en el caso de una aplicación antigua, vea si es una nueva charla con el equipo comercial sobre los flujos comerciales y la carga de usuarios.
#6) Recopile todas las métricas importantes, como el tiempo de respuesta, los hits por segundo, el rendimiento, la CPU, la memoria, la red y los usuarios virtuales en ejecución.
Lectura recomendada => Lista de herramientas de prueba de rendimiento disponibles en el mercado para realizar pruebas de carga exclusivas.
Conclusión
En este tutorial, hemos aprendido cómo las pruebas de carga juegan un papel importante en las pruebas de rendimiento de una aplicación, cómo ayuda a comprender la eficiencia y la capacidad de la aplicación, etc.
También llegamos a saber cómo ayuda a predecir si se requiere hardware, software o ajuste adicional en una aplicación.
¡¡Feliz lectura!!
Lectura recomendada
- Pruebas de carga con los tutoriales de HP LoadRunner
- Pruebas alfa y beta (una guía completa)
- Guía de pruebas de seguridad de aplicaciones web
- Guía de pruebas de estrés para principiantes
- Guía para principiantes sobre pruebas de penetración de aplicaciones web
- Una guía completa de pruebas no funcionales para principiantes
- Guía completa de pruebas de verificación de compilación (pruebas de BVT)
- Pruebas de rendimiento frente a pruebas de carga frente a pruebas de estrés (diferencia)