Tests con JMeter Recording Controller

En el anterior post usabamos Selenium para grabar la funcionalidad de una pag;ína web y luego automatizar las pruebas. En esta ocasión vamos a usar JMeter Recording Controller para grabar las peticiones HTTP que se realizan a un sitio y con ello simular la navegación de un usuario.

_config.yml

Este tipo de escenarios nos puede servir para realizar pruebas de carga o estrés a nuestro servidor de aplicaciones. Al ejecutar peticiones HTTP, sin necesidad de una UI (como chromiun o gecko), podemos enviar varios ciclos de peticiones al mismo tiempo, sin necesidad de ver afectada la memoria de nuestro cliente.

Primero necesitamos instalar JMeter y crear un nuevo proyecto a partir de un Template:

_config.yml

En la ventana emergente, elegimos la opción Recording with Think Time y presionamos el botón Create:

_config.yml

Este template nos creará la siguiente estructura de proyecto

_config.yml

Ahora añadimos los siguientes elementos al proyecto, dentro del elemento Thread Group añadir:

Add → Listener → Summary Report
Add → Listener → View Results Tree
Add → Listener → Simple Data Writer

Tambien, dentro de TestPlan añadimos:

Add → Config Element → CSV DataSet Config

Con todo ello, la estructura de nuestro proyecto debe verse asi:

_config.yml

Antes de comenzar con la grabación, en el elemento HTTP(S) Test Script Recorder debemos definir algunos parametros, como ser: Port y HTTPS domains, además de un identificador Transaction Name que nos sservirá para diferenciar por grupos las peticiones a realizar (En nuestro ejemplo, vamos a usar el texto LOGIN). Debe quedar asi:

_config.yml

Ahora presionamos el botón Start. JMeter nos mostrará un mensaje sobre la creación de un Certificado que debe instalarse en nuestro navegador web:

_config.yml

Este certificado se encuentra en el directorio bin dentro de la carpeta donde se ejecutó JMeter:

_config.yml

En nuestra prueba, vamos a instalarlo en Mozilla Firefox, para ello vamos al menpú Ajustes para importar el nuevo certificado:

_config.yml

Una vez importado el certificado, debemos cambiar la configuración del PROXY de Mozilla Firefox para que todas las solicitudes HTTP sean enviadas a JMeter y puedan ser grabadas:

_config.yml

Con todo esto realizado, podemos comenzar la grabación de nuestro caso de prueba, a través del panel Recorder: Transactions Control:

_config.yml

Este panel nos permitirá añadir etiquetas (1), e incluso reiniciar los contadores de las etiquetas (2) para que podamos separar la ejecución de nuestra prueba en etapas.

Al terminar de grabar el caso de prueba, presionamos el boton STOP del panel Recorder: Transactions Control. Nos fijamos en el elemento Recording Controller de nuestro proyecto en JMeter, y deberíamos tener algo asi:

_config.yml

Al revisar cada petición HTTP realizada en nuestra grabación nos encontraremos con este tipo de detalles sobre datos de formulario:

_config.yml

Estos valores podemos parametrizarlos a través del elemento CSV DataSet Config que se encuentra en nuestro proyecto.

Para ello, creamos un archivo CSV (sin cabeceras y separado por comas), que tenga, por ejemplo, los siguientes valores:

_config.yml

  • La columna 1 se refiere al nombre de usuario

  • La columna 2 se refiere a la contraseña de inicio de sesión del usuario

  • La columna 3 se refiere al productId que deseamos añadir a nuestro carrito de compra

  • La columna 4 se refiere al SKU del producto seleccionado; esto nos servirá para simular tráfico a través de la URL

En JMeter, la configuración del elemento CSV DataSet Config debe quedar mas o menos asi:

_config.yml

Es importante definir los nombres de las columnas en MAYUSCULAS, debido a que eso definirá los nombres de nuestras variables.

Para usar una variable en el script que se ha creado, se usa la siguiente sintaxis:

${NOMBRE_VARIABLE} 

Por lo que, nuestra petición de LOGIN, se verá asi:

_config.yml

También se puede usar la nomenclatura de nombre de variables en las URLs:

_config.yml

Finalmente, para usar todas las variables de nuestro archivo CSV, y que JMeter vaya iterando cada registro, se debe realizar la siguiente configuración en el elemento Thread group

_config.yml

Podemos los resultados en el elemento Summary Report de nuestro proyecto

_config.yml

comments powered by Disqus