jueves, 10 de mayo de 2007

Pasando expresiones regulares. JMeter


Muchas veces, necesitamos que la respuesta de una petición http, sea un parámetro de otra(s) peticiones posteriores. Ello se realiza de la siguiente manera:

1.-Para una petición http, añadimos un post-procesador "Extractor de Expresiones Regulares".
**Nombre: El que trae por defecto o algo descriptivo.
**Nombre de referencia: De esa forma llamaremos a la variable posteriormente.
**La expresión regular:
**Plantilla: De las partes del resultado de la aplicación de la expresión regular, podemos querer tomar la primera ($1$), la 2da ($2$), ...
**Coincidencia: lo dejo en blanco
**Valor por defecto: Si realmente nos interesa poner uno por defecto, se escribe aquí.

2.-Posteriormente, en otra petición http posterior, pondremos, por ejemplo, en los parámetros, al nombre del parámetro y el valor será ${nombre_de_referencia}.

Ejemplo: Quiero tomar de la respuesta de una petición todo un fichero xml que me viene como respuesta, y que empieza como "XML". La variable será varXML y aplico la expresión regular correspondiente.

Nombre de referencia: varXML
Expresión regular: name="XML" value="(.+?)"
Plantila: $1$

....luego en otras peticiones, en uno de sus parámetros tengo:
Nombre: miXML
Valor: ${varXML}

Importante: La respuesta suele venir en plano, es decir, sin codificar, por lo cual, es posible que para que funcione bien, el parámetro le tengamos que señalar que lo queremos codificado!!!!.


Para mayor referencia:
1.-http://wiki.apache.org/jakarta-jmeter/RegularExpressions
2.-http://wiki.apache.org/jakarta-jmeter/JMeterFAQ#head-87f846dad28fd6b2ad5eb0d44d527d572f810653
3.-Para probar expresiones regulares

JMeter. Creando una prueba


1.- Crear un Plan de pruebas:
1.1.- Ponerle un nombre

2.- Crear un grupo de hilos, para el plan de pruebas (añadir -> grupo de hilos):
2.1.- Nombre.
2.2.- Yo le coloqué 1 hilo.
2.3.- Período de subida le escribí un segundo.
2.4.- Bucles o ejecuciones: se le colocan cuantas se quieran, por ejemplo, 8. Esto quiere decir que intententará llegar hasta el final ese número de veces, si llega antes pues seguirá con otra prueba.

3.- Crear un controlador simple, para el grupo de hilos (añadir -> controlador lógico ->controlador simple):
3.1.- Gestor de cabecera http: Se suele colocar una cabecera como la siguiente.
Host: del que hacemos uso.
Accept-Language: es
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Pragma: no-cache
Content-type: application/x-www-form-urlencoded
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

3.2.- Gestor de cookies http: Selecciono Cookie policy = compatibility.
3.3.- Modificador de parámetros de usuario: Lo que trae por defecto. Lo que dice es tomar el users.xml para los datos de usuario. El users.xml es un fichero que estará en el directorio bin del jmeter. Los parámetros que espera de los usuarios se los podemos poner allí, ejemplo de datos:
requester.nif05332135E
requester.nif95400774V

3.4.-Petición http: Ahora tendré que simular todos los pasos que quiero realizar, llamadas a páginas, paso de parámetos,...
Importante: Mucho de lo que aquí se configura es común para todos los pasos, entonces, eso común lo colocamos en el Gestor de Cabecera HTTP, y lo dejamos vacío aquí.
.-Nombre: Para identificar este paso
.-Nombre de Servidor o IP:
.-Puerto:
.-Protocolo: Ej.: http.
.-Método: Pues el que se haya elegido de GET, POST,...
.-Path: Ruta, empieza por /, y es lo que se concatenará al protocolo://nombre de servidor o ip.
.-Utilizar KeepAlive
.-Enviar Parámetros con la Petición:
**Nombre del Parámetro.
**Valor del Parámetro.
**Codificar: Significa si quieres que lo codifique al enviarse, en base 64
**Incluir Equals?: Si había signos "=" los deja.

4.- Añado varios listener al grupo de hilos:
4.1.- Informe Agregado: Representa un informe global de las pruebas, con los % de errores, pasos, datos estadísticos,...
4.2.- Ver árbol de resultados: Puedes observar las peticiones y respuestas http, ver las salidas html o xml si las hubo.
4.3.- Ver resultados en árbol: Ves si van teniendo éxito las pruebas y en qué tiempo.