Compartir tecnología

Una breve discusión sobre los parámetros de usuario de expresiones regulares del preprocesador

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Una breve discusión sobre los parámetros de usuario de expresiones regulares del preprocesador

Los parámetros de usuario de expresiones regulares (Parámetros de usuario RegEx) son un preprocesador (Preprocesador) que permite a los usuarios extraer valores de los datos de respuesta basados ​​​​en expresiones regulares y aplicarlos, y pasar estos valores como parámetros a posteriores.solicitud HTTP u otros lugares necesarios. Esta característica es muy flexible para manejar contenido dinámico, ID de sesión, tokens, etc. y es un componente clave para implementar scripts de prueba automatizados.

escenas a utilizar

  1. Procesamiento de parámetros dinámicos: cuando el sistema de destino genera diferentes parámetros dinámicos (como ID de sesión, marca de tiempo, etc.) en cada solicitud, necesita extraer los parámetros posteriores y utilizarlos para continuar con las solicitudes posteriores.
  2. Personalización de datos de prueba: personalice los parámetros de solicitudes posteriores en función del contenido de la respuesta, como extraer la ID de usuario de la respuesta de inicio de sesión para solicitudes de consulta de perfil posteriores.
  3. Iteración de datos: si la respuesta contiene varios conjuntos de coincidencias, puede configurar el procesador para recorrer la extracción y aplicarla a múltiples solicitudes, lo que es adecuado para listas de prueba o páginas de resultados de búsqueda.

Pasos de configuración

  1. Agregue parámetros de usuario de expresiones regulares:
    ○ En el banco de trabajo o plan de prueba de JMeter, seleccione una solicitud HTTP u otra muestra que deba parametrizarse.
    ○ Haga clic derecho y seleccione "Agregar" > "Preprocesador" > "Parámetros de usuario de expresión regular".
  2. Parámetros de configuración:
    ○ Nombre de referencia de expresión regular: el nombre de la variable en el extractor de expresiones regulares. El nombre aquí debe ser coherente con la expresión regular.
    ○ Número de grupo de expresiones regulares de nombres de parámetros: el número de grupo del nombre del parámetro, como se detalla en los siguientes ejemplos.
    ○ Número de grupo de expresiones regulares de valores de parámetro: el valor correspondiente del grupo de nombre de parámetro, como se detalla en los siguientes ejemplos.

Ejemplos

Usamos SpringBoot para escribir el siguiente código de interfaz

 @PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
    public String authenticate(@RequestBody JSONObject request) {

        String validUsername = "admin";
        String validPassword = "password";
        String response = "{"total":2,"data":[{"id":123,"name":"John Doe","email":"[email protected]","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"[email protected]","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}";


        if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {
            return response;
        } else {
            return response;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Luego escribimos el siguiente script
Insertar descripción de la imagen aquí
Grupo de subprocesos: Mantener predeterminado
Solicitud HTTP 1: protocolo http, nombre del servidor o IP127.0.0.1, número de puerto 8091, método POST, ruta/inicio de sesión, codificación de contenido utf-8, datos del cuerpo del mensaje

{
    "username": "admin",
    "password": "password"
    }
  • 1
  • 2
  • 3
  • 4

Extracción de expresiones regulares器:设置的参数为引用名称var,正则表达式"id"😦.?),"nombre":"(.?)", "correo electrónico" (se puede conocer por el contenido del código de muestra), y nuestro propósito es extraer la identificación y el nombre, el número coincidente se establece en -1 y el valor predeterminado es NotFound
En este punto, primero podemos deshabilitar la solicitud HTTP 2 y los parámetros de usuario de expresión regular, luego ejecutar el script y ver la muestra de depuración del árbol de resultados. Puede ver los siguientes resultados en el cuerpo de la respuesta de los datos de la respuesta.

Variables de JMeter:
JMeterThread.last_sample_ok=falso
JMeterThread.pack=org.apache.jmeter.threads.Paquete de muestra@4fa1cf1
INICIO.HMS=165132
INICIO.MS=1720515092259
INICIO.YMD=20240709
PRUEBA DE INICIO.MS=1720578466746
_jm__threadgroup__idx=0
_jmeter.U_T
= grupo de hilos 1-1
var=No encontrado
var_1=
var_1_g=2
var_1_g0=“id”:123,“nombre”:“John Doe”,“correo electrónico”
var_1_g1=123
var_1_g2=Juan Pérez
var_2=
var_2_g=2
var_2_g0=“id”:456,“nombre”:“Jane Smith”,“correo electrónico”
var_2_g1=456
var_2_g2=Jane Smith
var_matchNr=2

Del contenido anterior, podemos ver el valor de la variable var extraída por la expresión regular correspondiente. En este momento, podemos continuar verificando la aplicación del preprocesador de parámetros de usuario de expresión regular y continuar configurando otros parámetros de componentes.
Solicitud HTTP 2: protocolo http, nombre del servidor o IP127.0.0.1, número de puerto 8091, método POST, ruta / inicio de sesión, codificación de contenido utf-8, luego agregue dos parámetros a los parámetros, complete los nombres 123, 456 respectivamente, no los uses ahora Independientemente del significado específico, intentémoslo primero.
Parámetros de usuario de expresión regular: el nombre de referencia de la expresión regular se establece en var, el nombre del parámetro aquí debe ser coherente con el nombre del parámetro en la expresión regular anterior, el número de grupo de expresiones regulares de los nombres de parámetros se establece en 1, el número de grupo de expresiones regulares de los valores de los parámetros se establece en a 2, ¿por qué? ¿Cómo configurarlo así? Podemos entenderlo de esta manera. ¿No configuramos 123 y 456 en la solicitud HTTP 2? Establecer el número de grupo de expresiones regulares de los nombres de parámetros en 1 puede entenderse como tomar los parámetros de var_1_g1 y var_2_g1 en los parámetros var. en la solicitud HTTP 2 Después de que los parámetros sean consistentes con los parámetros aquí, corresponderemos a la relación entre los parámetros y los datos, allanando el camino para que el número de grupo de expresiones regulares de los valores de los parámetros se establezca en 2. Podemos entender bien que cuando los valores de los parámetros El número de grupo de expresiones regulares se establece en 2, lo que se obtiene Los parámetros se convierten en var_1_g2 y var_2_g2.
El siguiente paso es verificar nuestros resultados. Ejecute el script para ver los datos de publicación del cuerpo de la solicitud en la solicitud HTTP 2 en el árbol de resultados. En general, nuestra solicitud falló, pero no importa. para verificar El resultado es irrelevante

PUBLICACIÓN http://127.0.0.1:8091/login
Datos POST:
123=Juan+Pérez&456=Jane+Smith
[no galletas]

A partir de los datos POST anteriores, puede ver que los datos correspondientes se han reflejado en la solicitud.

Precauciones

● Alcance: Los parámetros de usuario de expresiones regulares solo tienen efecto en la siguiente solicitud HTTP o muestra. Si necesita aplicarlos globalmente, considere usar el "extractor de expresiones regulares" junto con las variables.
● Depuración: utilice el detector "Ver árbol de resultados" para comprobar la coincidencia de expresiones regulares y garantizar una extracción de datos correcta.

Resumir

Los parámetros de usuario de expresiones regulares son una característica poderosa de JMeter, que simplifica el procesamiento de datos dinámicos y mejora la flexibilidad y la automatización de los scripts de prueba. Si se configura y utiliza correctamente, esta función puede manejar eficazmente las necesidades de pruebas de rendimiento de sistemas complejos.