Realizando pruebas básicas de estrés con JMeter

¿Quieres saber cómo hacer pruebas de carga o pruebas de estrés?, en este tutorial te explico cómo hacerlo usando JMeter

Advertencia: Esta guía es educativa y no deberá usarse para hacer pruebas a sitios que no te pertenecen ya que podrías meterte en problemas legales por ataques.

Antes de empezar, ¿qué son las pruebas de estrés?. Vamos a tratar de ponerlo lo más simple posible con una analogía, piensa que estás en un lugar muy concurrido, donde hay 100 personas por ejemplo, entonces, empiezan a hablarte una tras otra, ¿en qué punto dejarías de soportar escuchar a N cantidad de personas hablarte y sería tu punto de quiebre?, así es más o menos las pruebas de estrés para sitios web, ¿en qué punto nuestro sitio deja de responder?, ¿en qué punto ya no soporta la carga?…

Para ello, la Apache Foundation tiene JMeter, una herramienta súper útil para desarrollar estas pruebas de estrés o de carga, por lo que nuestro primer paso será descargar JMeter:

https://jmeter.apache.org/

JMeter usa Java por lo que deberán tener Java previamente instalado en su máquina.

Ya que tengamos descargado nuestro JMeter, descomprimido en algún sitio, iremos a la carpeta “bin” y abriremos “ApacheJMeter.jar”, veremos una interfaz más o menos así:

Dentro de esta, vamos a crear un nuevo conjunto de pruebas, para ello lo primero será nombrar nuestro conjunto de pruebas como: “Prueba de estrés del sitio X”, en mi caso haré pruebas a un sitio en un Free-Tier de AWS como demo.

Nuestro siguiente paso es agregar un grupo de hilos, para ello damos clic derecho en el plan que generamos y Añadir > Hilos y seleccionamos “Grupo de hilos”.

En nombre pondremos “10 usuarios”, a grandes rasgos este grupo de hilos serán los aparentes visitantes a nuestro sitio. Pensaremos que nuestro sitio tendrá 10 visitas por segundo en promedio, por lo que seleccionaremos “Contador de búcle” como “Sin Fin” para que no termine hasta que nosotros lo indiquemos y lo más importante, en número de hilos pondremos “10” aquí es como menciono, donde se generarán los “usuarios”. Por lo que veríamos algo como esto:

Cabe mencionar que, 10 es un buen número y que todos los equipos y redes lograrán mantener estables, pueden aumentar esta cantidad dependiendo a su conexión y su máquina, además claro de la cantidad de usuarios que creen que su sitio va a mantener.

Ahora necesitamos la petición, es por ello que dentro de nuestro grupo de hilos vamos a agregar una petición HTTP, para ello clic derecho en el grupo de hilos, después Añadir > Muestreador > Petición HTTP

Dentro de la petición HTTP de nombre le asignaremos “GET a la página principal”, en la parte “Basic”, vamos a ver donde dice “Protocolo”, si nuestro sitio web acepta SSL, pondremos https si no acepta SSL, pondremos http en este caso yo pondré http porque estoy usando una IP para la demo.

En nombre de servidor o IP, pondremos el dominio o IP que vamos a probar, ejemplo: google.com en la parte de método, tenemos la opción de usar GET, POST, PUT, etc…en este caso solamente veremos el caso de GET, así que lo dejamos como está, en ruta, ya que haremos pruebas a la página principal pondremos una diagonal/ si quisieran hacer pruebas por ejemplo a un perfil de usuario público tipo Facebook, pondrían la URL desde el / como: /perfil/hola-mundo .

De esta forma, JMeter conjuntará todo y generará una URL del tipo:

GET https://midominio.com/perfil/hola-mundo

Y ahí es donde estará realizando las peticiones. Veríamos algo así:

Ahora, necesitamos una forma de medir las peticiones como si fuéramos un usuario y rastrear el porcentaje de errores, la media de las peticiones y cada petición por separado, por ello vamos a agregar 3 cosas, un Árbol de Resultados, un Gráfico de Resultados y un Informe Agregado:

Todos estos pueden anidarlos a la petición HTTP o al grupo de hilos.

Para agregarlos hay que dar clic derecho en el grupo de hilos, luego, Añadir > Receptor, y dentro de esta opción verán las 3 herramientas.

Aquí no se ocupa configurar nada, quizá pueden cambiar el nombre pero no tiene mucho sentido.

Para poder empezar, guardemos nuestro conjunto de pruebas, haciendo clic en el botón de Guardar o en “Archivo > Guardar Plan de pruebas como…”

Listo, ya tenemos nuestro conjunto de pruebas, ahora hace falta que en su servidor el cual le harán las pruebas también lo monitoreen, recuerden, si harán esto eviten hacerlo en su sitio de producción para que no vayan a tirar alguna cuestión y les afecte. En mi caso uso htop ( sudo apt install htop )

Y con esto puedo monitorear los recursos que están en uso y saber si lo lograremos…

¿Qué sigue?, ejecutar nuestras pruebas, para ello usamos el botón de “Iniciar”:

Dentro del informe agregado podremos ver la cantidad de muestras (visitas), la media y mediana de estas, la cantidad de errores por porcentajes, el rendimiento (cuánto tarda en responder en promedio), los KB por segundo que se envían. Los otros valores no son relevantes para esta prueba, por ejemplo:

En el gráfico de resultados podremos ver a manera gráfica esta información y sus picos:

Y por último nuestro árbol de resultados nos mostrará cómo se van generando las peticiones, podemos optar por dar scroll automático pero a veces si queremos rastrear los errores es mejor no marcarlo.

Además podemos ver las cabeceras, la petición, la respuesta y demás en las pestañas, en lo personal te recomiendo usar “Parseado” para poder revisar mejor las cabeceras y demás información.

Al ejecutar estas pruebas, podremos ver también el rendimiento en nuestro servidor:

Y con ello entonces sabremos que por ejemplo 10 usuarios por segundo en nuestro inicio nos consume X cantidad de recursos, pero que el sistema se mantiene estable y sigue respondiendo a una tasa de Y cantidad de errores, y con esto podemos ir “tuneando” nuestro sistema, nuestro servidor HTTP, saber si requerimos más o menos recursos y muchas cosas más.

Espero te haya gustado esta guía, no te olvides de seguirme en Medium y darle “Clap” :).

¿Cuál es tu reacción?
+1
0
+1
0
+1
0
+1
0
+1
0
Total
0
Shares
Publicación anterior

10 Tips para iniciarte en la programación

Siguiente Publicación

Cómo integrar Google Maps en Angular de forma sencilla

Publicaciones Relacionadas