jMeter - Expresiones regulares
Las expresiones regulares se utilizan para buscar y manipular texto, basándose en patrones. JMeter interpreta formas de expresiones regulares o patrones que se utilizan en un plan de prueba de JMeter, al incluir el software de coincidencia de patrones Apache Jakarta ORO .
Con el uso de expresiones regulares, ciertamente podemos ahorrar mucho tiempo y lograr una mayor flexibilidad al crear o mejorar un plan de prueba. Las expresiones regulares proporcionan un método simple para obtener información de las páginas cuando es imposible o muy difícil predecir un resultado.
Un ejemplo de uso estándar del uso de expresiones es obtener un ID de sesión de la respuesta del servidor. Si el servidor devuelve una clave de sesión única, podemos obtenerla fácilmente usando expresiones en nuestro script de carga.
Para usar expresiones regulares en su plan de prueba, debe usar el Extractor de expresiones regulares de JMeter. Puede colocar expresiones regulares en cualquier componente de un plan de prueba.
Cabe destacar la diferencia entre contains y matches, como se usa en el elemento de prueba Response Assertion -
containssignifica que la expresión regular coincide con al menos una parte del objetivo, por lo que 'alfabeto' "contiene" 'ph.b.' porque la expresión regular coincide con la subcadena 'phabe'.
matchessignifica que la expresión regular coincide con todo el destino. Por lo tanto, el 'alfabeto' se "empareja" con 'al. * T'.
Suponga que desea hacer coincidir la siguiente parte de una página web:
name = "file" value = "readme.txt"
Y desea extraer readme.txt. Una expresión regular adecuada sería:
name = "file" value = "(.+?)">
Los caracteres especiales anteriores son:
( y ) - estos encierran la parte de la cadena de coincidencia que se devolverá
. - coincidir con cualquier personaje
+ - una o más veces
? - detenerse cuando el primer partido tenga éxito
Crear plan de prueba de JMeter
Comprendamos el uso de expresiones regulares en el extractor de expresiones regulares, un elemento de posprocesador, escribiendo un plan de prueba. Este elemento extrae texto de la página actual utilizando una expresión regular para identificar el patrón de texto con el que se ajusta un elemento deseado.
Primero escribimos una página HTML con una lista de personas y sus ID de correo electrónico. Lo implementamos en nuestro servidor Tomcat. El contenido de html (index.html) es el siguiente:
<html>
<head>
</head>
<body>
<table style = "border: 1px solid #000000;">
<th style = "border: 1px solid #000000;">ID</th>
<th style = "border: 1px solid #000000;">name</th>
<th style = "border: 1px solid #000000;">Email</th>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">3</td>
<td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">4</td>
<td id = "Name" style = "border: 1px solid #000000;">joe</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
</table>
</body>
</html>
Al implementarlo en el servidor tomcat, esta página se vería como se muestra en la siguiente captura de pantalla:
En nuestro plan de prueba, seleccionaremos a la persona en la primera fila de la tabla de personas que se ve en la página de lista de personas anterior. Para capturar la identificación de esta persona, primero determinemos el patrón donde encontraremos a la persona en la segunda fila.
Como se puede ver en la siguiente instantánea, el ID de la segunda persona está rodeado por <td id = "ID"> y </ td>, y es la segunda fila de datos que tiene este patrón. Podemos usar esto para hacer coincidir el patrón exacto del que queremos extraer información. Como queremos extraer dos piezas de información de esta página, la identificación de la persona y el nombre de la persona, los campos se definen de la siguiente manera:
Inicie JMeter, agregue un grupo de subprocesos Test Plan → Add→ Threads(Users)→ Thread Group.
A continuación, agregue una solicitud HTTP de muestra, seleccione el plan de prueba, haga clic derecho Add → Sampler → HTTP Request e ingrese los detalles como se muestra a continuación -
Name - Gestionar
Server Name or IP - localhost
Port Number - 8080
Protocol - Mantendremos este espacio en blanco, lo que significa que queremos HTTP como protocolo.
Path - jmeter / index.html
A continuación, agregue un Extractor de expresiones regulares. Seleccione el muestreador de solicitud HTTP (Administrar), haga clic derechoAdd → Post Processor → Regular Expression Extractor.
La siguiente tabla proporciona una descripción de los campos utilizados en la captura de pantalla anterior:
No Señor | Campo Descripción |
---|---|
1 | Reference Name El nombre de la variable en la que se almacenará la prueba extraída (refname). |
2 | Regular Expression El patrón con el que se comparará el texto que se extraerá. Los grupos de texto que se extraerán están delimitados por los caracteres '(' y ')'. Usamos '. +?' para indicar una única instancia del texto encerrado por las etiquetas <td ..> .. </td>. En nuestro ejemplo, la expresión es - <td id = "ID"> (+?) </td> \ s * <td id = "Name"> (+?) </td> \ s * |
3 | Template Cada grupo de texto extraído se coloca como miembro de la variable Persona, siguiendo el orden de cada grupo de patrón encerrado por '(' y ')'. Cada grupo se almacena como refname_g #, donde refname es la cadena que ingresó como nombre de referencia y # es el número de grupo. $ 1 $ a se refiere al grupo 1, $ 2 $ a se refiere al grupo 2, etc. $ 0 $ se refiere a lo que sea que coincida la expresión completa. En este ejemplo, el ID que extraemos se mantiene en Person_g1, mientras que el valor del Nombre se almacena en Person_g2. |
4 | Match No. Dado que planeamos extraer solo la segunda aparición de este patrón, haciendo coincidir el segundo voluntario, usamos el valor 2. El valor 0 haría una coincidencia aleatoria, mientras que un valor negativo debe usarse con el controlador ForEach. |
5 | Default Si no se encuentra el elemento, este será el valor predeterminado. Este campo es opcional. Puede dejarlo en blanco. |
Agregue un oyente para capturar el resultado de este plan de prueba. Haga clic con el botón derecho en el grupo de subprocesos y seleccione la opción Agregar → Oyente → Ver árbol de resultados para agregar el oyente.
Guarde el plan de prueba como reg_express_test.jmx y ejecute la prueba. La salida sería un éxito como se muestra en la siguiente captura de pantalla: