Extractor de Expresiones Regulares


En esta entrada voy a tratar de profundizar sobre el uso de un elemento muy importante para manejar la correlación en la ejecución de los escenarios de las pruebas de performance, ese elemento es el Extractor de Expresiones Regulares (Regular Expression Extractor).

La idea es hacer esta estructura de escritura con muchos de los componentes de JMeter por lo que les pido que me digan si les parece bien estructurada la información o si quisieran agregar algún otro punto a la explicación ;).

¿Para que sirve?

  • Principalmente, la correlación de la información del script.
  • También se puede usar para diferenciar entre que camino seguir dependiendo de algún resultado, si lo combinamos con el componente IF.
  • Extraer valores en masa de grillas y algún otro componente.

Correlación

Empecemos por la definición de correlación: La correlación es la relación que existe entre una variable que esta siendo utilizada en la sesión del Usuario que navega la aplicación y los valores de las mismas en el servidor.

Esto quiere decir que cuando grabemos el script del escenario que queremos testear algunas variables que son dinámicas van a tomar valores fijos (Harcodeados) por lo que al querer correr el escenario con JMeter (o la herramienta que sea) nos vamos a encontrar con errores del servidor ya que se le esta mandando valores fijos cuando los valores de esas variables deben ser dinámicos.

Ejemplo de Correlación:

En el script que grabamos podemos tener incluido al servidor enviando al usuario un número de identificación de sesión, lo cual es utilizado para identificar al cliente durante esa sesión particular. Este número de sesión fue grabado con un valor fijo en el script durante la grabación.

Durante la corrida del script que acabamos de grabar el servidor envía al usuario un nuevo ID de sesión, el cliente necesita capturar y volver enviar ese nuevo valor al servidor para que el mismo pueda identificarlo, pero si en cambio el cliente envía el ID de sesión viejo (quedo fijo durante la grabación) el servidor no reconoce al usuario, el mismo pierde la sesión y no puede seguir con su escenario.

Veamos un gráfico a modo de ejemplo:

En este ejemplo se puede ver el problema de la correlacion
En este ejemplo se puede ver el problema de la correlacion

Extractor de Expresiones Regulares (Regular Expression Extractor)

Una vez que entendimos la correlación de la información vamos a ver como la solucionamos, para ello contamos con el Post-Procesador llamado Regular Expression Extractor el cual profundizaremos un poco.

El Extractor de Expresiones Regulares nos posibilitara extraer los valores que toman las variables dinámicas para que nuestro script corra de manera satisfactoria. No es el único componente que nos posibilita esto, mas adelante hablaremos de las alternativas ;).

Extractor de Expresiones Regulares
Extractor de Expresiones Regulares

Nos permite extraer valores desde la respuesta del Server usando expresiones regulares de Perl. Como es parte del grupo de los post procesadores, se ejecutara después de cada Request en su alcance, aplicando la expresión regular, extrayendo el valor correspondiente, generando el string base y guardando el resultado en la variable que se definió.

Los parámetros más importantes de este componente son los siguientes:

  • Name: Nombre con el cual lo identificamos en el Test Plan
  • Response Field to check: Indicamos de donde vamos a extraer el valor que buscamos.
    • Body – El cuerpo de la respuesta del servidor, por ej. El contenido de una pagina web (sin incluir el tag head)
    • Body (unescaped) – El cuerpo de la respuesta del servidor, con todos los códigos de escapeo HTML reemplazados. Tener en cuenta que puede haber sustituciones incorrectas por desconocer el contexto del HTML.
    • Headers – El encabezado del HTML. Tener en cuenta que pueden no estar presenta para samples que no son HTTP.
    • URL – La URL de respuesta del servidor.
    • Response Code – El código de respuesta del servidor. Por ej. 200
    • Response Message – El mensaje de respuesta del servidor. Por ej. OK
  • Reference Name: Nombre con el cual vamos a hacer referencia a la variable que guarda el valor extraído.
  • Regular Expression: La expresión regular en Perl que usaremos para parsear (extraer) el valor deseado. Tener en cuenta que debe tener por lo menos un set de paréntesis “()” para capturar el valor deseado, ya que en la variable se guarda la expresión bajo “()”
  • Template: La base utilizada para crear el string desde las coincidencias encontradas. La sintaxis para indicar el grupo es la siguiente: $nroGrupo$. Por Ej., para seleccionar el grupo 1, pondremos: $1$
  • Match No.: Indica cual coincidencia tomar. Si ponemos 0 seleccionara una coincidencia al azar; si ponemos un valor positivo N, seleccionara la coincidencia nro N; si ponemos un valor negativo -N, seleccionara todas las coincidencia posibles.
  • Default Value: Si la expresión regular no tiene coincidencias, entonces la variable de referencia tomara el valor por default.

Links de utilidad

Ejemplos de uso

En las aplicaciones .NET es muy común el uso de la variable VIEWSTATE la cual les puede traer mas de un dolor de cabeza, veamos un ejemplo de cómo podríamos extraer el valor de esta variable para usar en el posterior pedido al Server:

Body Response:

<HTML>

<BODY>

<form name=”_ctl0″ method=”post” action=”page.aspx” id=”_ctl0″>
<input
value=”dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=” />

…..Algo mas de código….
</form>

</BODY>

</HTML>

Regular Expression Extractor:

Reference Name: viewState

Regular Expression: <input [^name].*name=”__VIEWSTATE”[^value].*value=”(.+?)”

Template: $1$

Match No.: 0

Anuncios

2 pensamientos en “Extractor de Expresiones Regulares”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s