Descargar JMeter
Iniciar JMeter:
C:
Grabador de Script de Prueba HTTP(S)
Para probar el rendimiento de un sitio web con JMeter, primero debemos grabar el flujo de trabajo (petición/respuesta). La grabación del flujo de trabajo en una conexión HTTPS se realiza de la siguiente manera:

JMeter ofrece un servidor proxy que, en la configuración predeterminada, escucha en el puerto 8888.

Como no nos interesan las imágenes, archivos CSS, etc., los excluimos:

Dado que JMeter escucha en el puerto 8888, debemos redirigir la comunicación con Internet al servidor proxy local:

La navegación por sitios web ya no funcionará. Solo podremos visitar un sitio web iniciando el grabador:

Al iniciarse, se crea un certificado raíz de JMeter con una validez de días. El certificado se guarda en la carpeta bin de JMeter y debe importarse a continuación en el navegador:

La importación en Firefox se realiza en “Ver certificado -> Autoridades -> Importar”:





El grabador está activo y podemos comenzar con la primera grabación. En este punto quiero grabar el inicio de sesión en un sitio web:

Como se puede ver en la ilustración, JMeter abre, tras el inicio, la ventana emergente Transactions Control anterior, que podemos ignorar por el momento. La grabación se completará cuando hagamos clic en el botón Detener.
Después del inicio de sesión exitoso, se muestra la página de bienvenida:

La grabación se mostrará luego dentro de JMeter:

BlazeMeter
También es posible realizar la grabación con BlazeMeter e importarla posteriormente dentro de JMeter (arrastrar y soltar). Esto tiene la ventaja de que ya no es necesario configurar el proxy. Además, las grabaciones de BlazeMeter son más ligeras, ya que filtran la comunicación innecesaria. BlazeMeter también ofrece complementos para navegador.

En http://blazedemo.com se puede probar BlazeMeter o simular una reserva de vuelo.
Thread-Group
La grabación de BlazeMeter incluye un Thread Group. Un hilo sirve para repetir una grabación x veces, para simular una carga real. Si hacemos clic en play sin un Thread Group, ejecutamos la grabación solo una vez.
Manualmente se agrega un Thread Group de la siguiente manera:


El número de Threads es equivalente al número de usuarios. En este caso, quiero simular el acceso de 100 usuarios, es decir, 100 usuarios deben ejecutar el flujo de trabajo grabado (grabación).
Las 100 personas deben ejecutar la grabación en un período de tiempo de 2 segundos, es decir, en 2 segundos 100 personas ejecutarán el flujo de trabajo. El 1 significa que el hilo debe ejecutarse solo una vez. Si se selecciona ‘repetición infinita’, las 100 personas ejecutarán el flujo de trabajo en 2 seg. y luego comenzarán de nuevo, y otra vez y otra vez. Si está seleccionada ‘repetición infinita’, se puede especificar en ‘Duración (segundos)’ que, por ejemplo, con 120 la ejecución se repetirá hasta que se alcancen los 120 segundos.
En ‘Acciones en caso de error en una muestra….’ se puede definir qué debe suceder en caso de error, p.ej. simplemente comenzar con el siguiente bucle (loop).

Reporting
Antes de empezar la ejecución de las grabaciones debemos incluir uno o varios listeners en el proyecto. Un listener tiene la tarea de generar un informe, p.ej. Response Time Graph.

Voy a incluir los siguientes listeners:
- View Result Tree
- Report
- Generate Summary Results
- Graph

El resultado de View Result Tree muestra que no hubo comunicación errónea (marcado en verde). Además, obtenemos la información de solicitud/respuesta mostrada:

Report muestra la siguiente información:

Sample: número de llamadas a reserve.php (req/resp). En este ejemplo, reserve.php se llamó 10 veces, es decir, por 10 usuarios.
Average: las 10 llamadas tardaron de media 212 milisegundos. Por ejemplo, el procesamiento duró más tiempo para un usuario que para otro.
Median: la mediana, es decir, el usuario que representa la mediana, recibió una respuesta de 150 milisegundos.
90% Line: el 90% de los usuarios, es decir, 9 de 10, recibió de media una respuesta en 322 milisegundos. La misma información también para el 95% y el 99%.
Min: la respuesta más rápida la recibió un usuario en 131 ms.
Maximum: el usuario que más tardó esperó 359 ms para una respuesta.
Error %: tasa de errores en %.
Throughput: número de solicitudes que un servidor puede procesar por segundo, es decir, el servidor puede procesar 1.3 req por segundo.
El plugin “View Result Tree” muestra dos tipos de muestras:
1. Main Samples: en este caso, reserve.php y purchase.php.
2. Sub-Sample: son las llamadas subyacentes, p.ej. purchase.php-0.

HTTP Cookie
Quien quiera guardar las cookies, p.ej. la cookie de inicio de sesión, puede agregar el Cookie Manager correspondiente mediante “Add -> Config Element -> HTTP Cookie Manager”. La incorporación se realiza dentro del Thread Group correspondiente.
JMeter Plugins Manager
JMeter se puede ampliar mediante plugins. Estos se pueden descargar, entre otros, aquí: https://jmeter-plugins.org
También existe la posibilidad de instalar el JMeter Plugin Manager, que permite instalar los plugins desde JMeter en lugar de importarlos individualmente.

Algunos de los plugins más populares son:
- Custom Thread Groups
- Ultimate Thread Group
- Throughput Shaping Timer
- PerfMon Servers Performance Monitoring
- 3 Basic Graphs
Assertion
Mediante assertions podemos especificar qué resultados esperamos, p.ej. al reservar un vuelo en http://blazedemo.com, espero después de seleccionar el vuelo correspondiente un mensaje de respuesta que indique que mi vuelo de París a Roma ha sido reservado:


Las assertions se pueden seleccionar en “Add -> Assortions -> Response Assertion”. En este caso he agregado una Response Assertion.
….
