Gestión de id's dinámicos en peticiones JMeter

Cuando capturamos la navegación de un usuario JMeter registra el “id” del componente HTML con el valor que tiene dicho componente para la realización de las peticiones POST.

Este id, al utilizar JSF en algunas ocasiones puede tener una parte dinámica que no controlamos desde el código de nuestra aplicación. Esto supone un problema ya que en cada reinicio de servidor esos id's cambian haciendo que el test deje de funcionar.

Para solucionar esto deberemos abordar dos enfoques. En primer lugar, intentar poner un id en nuestro código de aplicación en todos los elementos que vayan a intervenir en nuestro test y en sus ancestros.

En segundo lugar, crearemos, en las peticiones donde sea imposible evitar esta situación un extractor de expresiones regulares para recoger ese id dinámico y usarlo en la petición.

Para crear id's dinámicos deberemos tener en cuenta dos peticiones. La petición padre que genera la pantalla y la petición hija que hará POST de los valores mostrados en la pantalla anteriormente generada.

En este contexto, los extractores de expresiones regulares deben ponerse como postprocesador de la petición que genera la pantalla y usarse sus valores en la petición que hace POST.

Partiendo de esta petición

Podemos ver que hay tres campos que tienen un id dinámico: j_idt222, j_idt223 y j_idt224. Esa parte dinámica la controla JSF y no hemos sido capaces de poder evitar que salga poniendo id's a los componentes HTML de nuestra página.

Esta petición POST, está precedida de otra petición (en nuestro caso GET) que genera la pantalla en la que interactúa el test.

Es en la petición GET, como se muestra en la imagen anterior, dónde debemos crear los estractores para los id dinámicos de cada una de las variables que queremos procesar. Debe haber un extractor por id dinámico.

Una vez localizados los campos deberemos crear el extractor de expresiones regulares de igual manera que se hace para la extracción del JSFViewState

  • Nombre – indicamos para que es el extractor, normalmente el campo que se va a extraer.
  • Nombre de Referencia – la variable donde se guardará el valor de la parte dinámica del id
  • Expresión Regular – la expresión que se busca en la respuesta de una petición. En nuestro caso copiaremos el id entero que tiene el elemento (usando el inspector del navegador) y sustituiremos la cadena de id generada de manera dinámica por
 ([^"]+) 
  • Plantilla – el valor es: $1$
  • Coincidencia No – el valor es: 1
  • Valor por Defecto – no se especifica, marcamos la casilla Use empty default value.

Una vez creadas todos los extractores, sustituiremos su valor en los campos correspondientes de la peticion POST.

Transformando la petición

En la petición

  • fdw2.0/fundeweb2.0/gt/iddinamico-guia-jmeter.txt
  • Última modificación: 02/09/2020 11:36
  • por PEDRO DELGADO YARZA