Procesador en JMeter: Preprocesador y posprocesador

⚡ Resumen inteligente

Procesador en JMeter modifica las solicitudes del Sampler antes o después de la ejecución. El PreProcessor prepara los datos de la solicitud, mientras que el PostProcessor los procesa.tracts valores y controla el flujo de prueba, lo que permite la correlación, la parametrización dinámica y un comportamiento fiable en las pruebas de rendimiento.

  • ⚙️ Definición básica: Un procesador modifica el Sampler dentro de su ámbito, ejecutándose antes de la solicitud o después de la respuesta.
  • 🔍 Función del preprocesador: Los preprocesadores establecen variables, reescriben URLs, analiza los enlaces HTML y aplica los parámetros del usuario antes de que se ejecute un Sampler.
  • 📤 Función del postprocesador: Los postprocesadores leen las respuestas, por ejemplotracasigna valores dinámicos a variables y decide si la prueba en ejecución continúa.
  • 🧩 ExtracSelección de tor: Expresiones regulares, límites, JSON, CSS/jQuery y XPathtracCada uno de los tors requiere un formato de respuesta diferente.
  • 🛑 Control de flujo: El controlador de acciones de estado de resultados detiene un hilo o toda la prueba cuando falla un muestreador.
  • 🧪 Tutorial práctico: Seis pasos permiten crear un plan que se detiene automáticamente cuando una ruta no válida devuelve un error del servidor.

Procesador en JMeter

Un procesador en Apache JMeter es un elemento del plan de pruebas que modifica los Samplers dentro de su ámbito. Se ejecuta automáticamente, ya sea justo antes de que una solicitud salga JMeter o inmediatamente después de que llegue una respuesta, lo que lo convierte en el principal mecanismo para manejar datos dinámicos durante un prueba de rendimiento.

Hay 2 tipos de procesadores:

  1. Preprocesador
  2. Postprocesador

El alcance decide hasta dónde llega un procesador. Un procesador colocado directamente debajo de un Plan de prueba Un grupo de subprocesos se aplica a todos los muestreadores que se encuentran debajo, mientras que un procesador anidado dentro de un único muestreador afecta solo a esa solicitud. Comprender esta regla evita los errores de configuración que se describen en la sección de solución de problemas de esta página.

Preprocesador

El preprocesador ejecuta alguna acción. antes haciendo una Solicitud de Muestra.

Considere un ejemplo simple: digamos que desea JMeter "arañar" a través del sitio web bajo prueba, analizar gramaticalmente enlace (verifique todos los enlaces en la página) y volvemos el HTML. Agregaría alguna acción como "analizador de enlaces HTML" a su controlador antes de crear una solicitud HTTP.

Preprocesador

El diagrama anterior muestra el preprocesador situado entre el controlador y la solicitud saliente. Debido a que se ejecuta primero, es el lugar correcto para construir los datos de la solicitud: generar una marca de tiempo, leer un valor de una columna CSV, reescribir un identificador de sesión en el URLo asignando credenciales diferentes a cada usuario virtual.

Postprocesador

El posprocesador ejecuta alguna acción después de realizar una solicitud de muestra.

Considere un ejemplo simple: JMeter envía una solicitud HTTP al servidor web bajo prueba (etc. www.google.com) y obtener la respuesta. Quieres JMeter Para detener la prueba si la respuesta del servidor es un error, puede utilizar el postprocesador para realizar la tarea anterior de la siguiente manera:

Postprocesador

Como ilustra el segundo diagrama, el Postprocesador lee la respuesta después de que el Sampler se completa. Esta es también la respuesta estándar a la correlación. Cuando un servidor devuelve un token, un ID de sesión o un número de pedido que cambia en cada ejecución, un Postprocesador captura ese valor en un JMeter variable para que el siguiente Sampler pueda reutilizarla.

Tipos de preprocesadores en JMeter

Apache JMeter Incluye un conjunto compacto de preprocesadores. Cada uno prepara un muestreador de una manera diferente, por lo que seleccionar el elemento correcto permite que el plan de pruebas sea legible y fácil de mantener.

  • Tiempo de espera de ejemplo: Define una duración máxima para una solicitud. Cualquier Sampler que se ejecute durante más tiempo del valor configurado se marcará como fallido.
  • Parámetros de usuario: Asigna valores específicos a las variables por usuario virtual, de modo que cada hilo envía su propio conjunto de datos.
  • Analizador de enlaces HTML: El programa rastrea la página que se está probando, analiza los enlaces que encuentra y los incorpora a la siguiente solicitud HTTP.
  • HTTP URL Modificador de reescritura: Inyecta un identificador de sesión en el URL para aplicaciones que track sesiones sin cookies.
  • Parámetros de usuario de expresiones regulares: Rellena los parámetros de la solicitud utilizando valores capturados mediante una expresión regular de una respuesta anterior.
  • Preprocesador JDBC: Ejecuta una instrucción SQL antes del Sampler, lo cual resulta útil para inicializar o restablecer los registros de la base de datos.
  • Preprocesador JSR223: Ejecuta un Groovy or Java Script para cualquier lógica de preparación personalizada. Sustituye al antiguo BeanShell PreProcessor y ofrece un rendimiento significativamente superior bajo carga.

💡 Consejo: Prefiera el preprocesador JSR223 con el Groovy Lenguaje sobre BeanShell. Groovy Los scripts se compilan y se almacenan en caché, por lo que consumen mucha menos CPU cuando miles de hilos se ejecutan en paralelo.

Tipos de Postprocesadores en JMeter

Los postprocesadores se dividen en dos grupos: por ejemplotracLos muestreadores extraen valores de una respuesta, y los manejadores reaccionan al resultado de un muestreador. La tabla siguiente relaciona cada elemento con el formato de respuesta que mejor se ajusta a él.

Postprocesador Mejores adecuados para Uso típico
Expresión regular Extractor Cualquier respuesta de texto Captura de tokens o identificadores desde HTML y texto plano.
Límite Extractor Cualquier respuesta de texto Capturar un valor usando un límite izquierdo y derecho en lugar de una expresión regular completa.
JSON Ejemplotractor respuestas JSON Lectura de campos de cargas útiles REST durante Pruebas de API
CSS/jQuery Extractor Respuestas HTML Seleccionar un elemento mediante un selector CSS.
XPath Extractor Respuestas XML y XHTML Navegación por un árbol de documentos estructurado
Postprocesador JDBC Resultados de la base de datos Verificar o limpiar filas después de una solicitud
Procesador posterior JSR223 Cualquier respuesta Análisis y aserciones mediante scripts personalizados
Controlador de acción de estado de resultado Cualquier respuesta Paradaping un hilo o toda la prueba cuando falla un Sampler

El límite ExtracTor llegó en JMeter 4.0 y suele ser la opción más rápida de escribir, porque solo solicita el texto inmediatamente a la izquierda y a la derecha del valor. La expresión regular ExtracTor sigue siendo la opción más flexible cuando el marcado circundante varía entre las respuestas.

Diferencia entre preprocesador y postprocesador

Ambos elementos comparten las mismas reglas de alcance, pero resuelven problemas opuestos. La siguiente comparación resume la diferencia antes del ejemplo resuelto.

Parámetro Preprocesador Postprocesador
Tiempo de ejecución Se ejecuta antes de que el muestreador envíe su solicitud. Se ejecuta después de que el muestreador recibe su respuesta.
Propósito primario Prepara y modifica los datos de la solicitud. Lee los datos de respuesta y reacciona a ellos.
Elementos típicos Parámetros de usuario, analizador de enlaces HTML, preprocesador JSR223 Expresión regular Extractor, JSON Extractor, Controlador de acciones de estado de resultado
Efecto sobre el flujo No se puede detener la prueba, solo se puede dar forma a la solicitud. Puede detener un hilo o toda la ejecución de la prueba.
Meta común Parametrización Correlación y manejo de errores

En la práctica, ambos funcionan conjuntamente. Un PostProcessor captura un token de sesión de la respuesta de inicio de sesión, y un PreProcessor, en la siguiente solicitud, inyecta ese token antes de que se envíe la llamada. El siguiente ejemplo ilustra el funcionamiento del PostProcessor.

Ejemplo de posprocesador

Este tutorial le mostrará instrucciones paso a paso sobre cómo utilizar el posprocesador en JMeter. Comencemos con el sencillo script de prueba.

  1. JMeter envía una solicitud HTTP al servidor web bajo prueba www.google.com.
  2. JMeter obtiene respuesta de la Google servidor.
  3. Si la respuesta del servidor es un error, JMeter will detener la prueba.
  4. Si la respuesta del servidor OK (No hay error), JMeter will continue la prueba.

Aquí está la hoja de ruta de este ejemplo:

Ejemplo de posprocesador

Condición previa:

We reutilizar el Paso 1 y el Paso 2 en el artículo JMeter Test de rendimiento. Si JMeter aún no está instalado, siga las instrucciones JMeter guía de instalación de antemano.

Paso 1) Agregar grupo de subprocesos

Haz clic derecho en la Plan de prueba y agregue un nuevo grupo de hilos: Agregar -> Hilos (Usuarios) -> Grupo de hilos

Pero en el panel de control del Grupo de subprocesos, ingrese Propiedades del subproceso de la siguiente manera:

Agregar grupo de hilos

Esta configuración permite JMeter Para crear 10 solicitud del usuario para http://www.google.com 10 veces.

Paso 2) Agregar JMeter elementos

  • Agregar solicitud HTTP predeterminada
  • Agregar solicitud HTTP

todavía hacemos JMeter Enviar petición http://www.google.com a Google servidor.

Paso 3) Agregar elemento posprocesador

Haga clic en Grupo de hilos -> Agregar -> Postprocesador -> Controlador de acción de estado de resultado

Controlador de acción de estado de resultado permite al usuario detener el hilo o toda la prueba si la solicitud del usuario falla.

Agregar elemento de posprocesador

En el panel de control de acción del estado del resultado, elija Detener la prueba ahora. Esta selección detendrá la prueba si JMeter Recibe el error de la respuesta del servidor.

Agregar elemento de posprocesador

Paso 4) Configurar la solicitud HTTP

Abra el panel de solicitud HTTP. Ingresar "a B C" al campo Ruta.

Configurar la solicitud HTTP

Cuando usted entre "a B C" al camino, JMeter creará un URL solicitud de Google servidor: http://www.google.com/abc. Este URL no existe en Google servidor. Es Mal URL solicitud así Google El servidor devolverá un error.

Paso 5) Agregar vista del árbol de resultados

Haga clic en Grupo de hilos -> Agregar -> Perfil -> Ver árbol de resultados

Agregar ver árbol de resultados

Paso 6) Ejecutar prueba

Seleccione Ver árbol de resultados, presione el botón Ejecutar en la barra de menú. Verás el error respuesta de Google El servidor y la prueba se detendrán. sin completando 100 hilos.

Ejecute la prueba

Ahora regrese al paso 4, abra el panel Solicitud HTTP, ingrese "calendario”al panel. Hace JMeter Para crear URL solicita https://calendar.google.com/calendar/u/0/r a la parte superior Google servidor. Esto es correcta URL solicitud así Google El servidor devolverá OK (sin error).

Ejecute la prueba

Seleccione Ver árbol de resultados, presione el botón Ejecutar en la barra de menú. Verás el OK respuesta de Google El servidor y la prueba continuarán hasta que se completen los 100 hilos.

Ejecute la prueba

Añadiendo un afirmación Junto con el controlador de acciones de estado de resultado, la comprobación se vuelve más estricta, ya que una aserción puede hacer que falle un Sampler que devolvió HTTP 200 pero entregó el contenido incorrecto.

Localización de averías

Si enfrenta el problema mientras ejecuta el escenario anterior, haga lo siguiente:

  1. Compruebe si se está conectando a Internet a través de un proxy. En caso afirmativo, elimine el proxy.
  2. Abrir una nueva instancia de Jmeter
  3. Abra el panel de ProcesadorTestPlan.jmx en jmeter
  4. Double-haga clic en Grupo de subprocesos -> Ver árbol de resultados
  5. Ejecutar la prueba

Si un Postprocesador parece no hacer nada, compruebe primero su posición. Un Postprocesador colocado fuera del ámbito del Sampler al que apunta nunca se ejecuta, que es la causa más frecuente de un error vacío.tracvariable ted. Elementos relacionados como controladores y pruebas distribuidas Sigue la misma lógica de alcance.

Preguntas Frecuentes

Un preprocesador modifica el contenido de una solicitud antes de enviarla. Un temporizador solo pausa el hilo durante un intervalo definido. Ambos se ejecutan antes del muestreador, pero el temporizador nunca modifica los datos de la solicitud.

La extracTor guarda el valor en un JMeter nombre de variable que usted defina. Cualquier Sampler posterior en el mismo hilo lo referenciará con la sintaxis ${variableName}, en una ruta, encabezado o cuerpo de la solicitud.

Sí. Varios asistentes de IA ahora leen una respuesta grabada y sugieren una expresión regular o un par de límites para la correlación. La sugerencia aún necesita revisión, ya que la IA no puede saber qué valores son realmente dinámicos.

Sí. Los asistentes de IA comparan la respuesta bruta con la respuesta esperada.tracexpresión de tor y señalar desajustes en escaping, grupopingo ámbito. Verifique la corrección dentro del Árbol de resultados de la vista antes de confiar en ella en una ejecución de carga.

Los procesadores se ejecutan una vez por cada ejecución del muestreador dentro de su ámbito. Con diez hilos...ping cinco veces, un procesador conectado a ese Sampler se ejecuta cincuenta veces, y cada hilo mantiene sus propios valores de variables.

Resumir este post con: