vars postprocessor example jmeter beanshell

vars - beanshell postprocessor jmeter example



Jmeter. BeanShell PostProcessor (4)

He revisado el script de shell de bean en jmeter, pero no encontré ningún ejemplo de eso, por qué es útil en jmeter y de qué manera leer los valores de muestra, etc. beanshell post / pre script del procesador donde escribimos el script. Estoy luchando con esto, cuál es su uso real. Explique con esto que sería una gran ayuda para mí o para otros también para comprender su uso.


Por ejemplo, yo uso JMeter para crear un cliente. Si el mensaje de respuesta es Created , establezca el resultado en Pass ; De lo contrario, establezca el resultado en Fail y el mensaje de error en Note:Creation failed Error en la Note:Creation failed . Los pasos son:

  1. Ensamble la solicitud de http usando TTP Request Sampler .
  2. Añadir una BSF Assertion Sampler debajo de él.
  3. Encuentre los métodos que necesito usar desde http://jmeter.apache.org/api/index.html . Como necesito manipular la Http Request Sampler , voy directamente al paquete org.apache.jmeter.protocol.http.sampler . Si está familiarizado con esos métodos, omita este paso.

  1. Termina el muestreador BSF. El prev representa el resultado de la muestra anterior

Puede usar el motor de secuencias de comandos BeanShell (o, mejor aún, el JSR223 PreProcessor / PostProcessor / Sampler) para calcular los parámetros que necesita para su prueba. Lo uso para diferentes tipos de operaciones:

  • Seleccionando un archivo aleatorio para subir desde un directorio
  • Cálculo de claves hmac para la autorización de carga / descarga (necesario para Swift)
  • Configuración de variables para un entorno específico (basado en un parámetro)

Aquí un ejemplo de secuencia de comandos para seleccionar un archivo aleatorio y escribir las características específicas del archivo en las variables, a las que puede acceder en los siguientes pasos:

File folder = new File(vars.get("image_path")); File[] imageFiles = folder.listFiles(new FileFilter() { public boolean accept(File pathname) { return !pathname.isHidden(); } }); Random rnd = new Random(); File selected = imageFiles[rnd.nextInt(imageFiles.length)]; String file = selected.getAbsolutePath(); String extension = file.substring(file.lastIndexOf(''.'')+1); String mimetype = URLConnection.guessContentTypeFromName(file); vars.put("CURRENT_FILE", file); vars.put("FILE_EXT", extension.toUpperCase()); vars.put("MIME_TYPE", mimetype);


Si desea realizar cálculos entre solicitudes, Beanshell le ayudará a lograrlo en jmeter. Tenemos Beanshell Sampler , Beashell Pre Processor y Beanshell Post Processor . Para un ejemplo, cree un grupo de hilos y agregue una muestra de beanshell como en la figura. Bajo guión entrar

var a=1; var b=2; var c=a+b; log.info("sum="+c);

y ejecutar con el visor de registros habilitado (menú Opciones> Visor de registros).

Puede llamar a los métodos java de un jar (debe estar en jmeter_folder / lib / ext) usando el script beanshell.

Beashell Pre Processor se utiliza para realizar cálculos y enviar los valores junto con la solicitud. Supongamos que desea cifrar el nombre de usuario y la contraseña antes de enviarlos. Puede proporcionar credenciales, cifrarlo usando métodos beanshell / java y establecerlo como variables en el script de vars.put("variablename",variablevalue) ). Puede agregar la variable para solicitar como http://test.com?parameter=${variablename} .

De manera similar, los PostProcesadores de Beashell se utilizan para procesar la respuesta. Supongamos que desea descifrar un valor de la respuesta, extraer el valor (utilizando el extractor de expresiones regulares) y descifrarlo utilizando el script beanshell.


Si observa la sección "Script" de Beanshell Post Processor, verá lo siguiente:

Script(variables: ctx, vars, props, prev, data, log)

  • ctx - significa JMeterContext , proporciona acceso a la API de contexto de JMeter (ver JavaDoc para más detalles). Ejemplo de uso:

    int threadNum = ctx.getThreadNum(); // get current thread number

  • vars - significa JMeterVariables . Usando vars puedes obtener / establecer valores variables.

    String myvar = vars.get("myvar"); // get ${myvar} variable value and store it to myvar string myvar = myvar + "something"; // append "something" to myvar vars.put("myvar", myvar); // put new value into ${myvar} variable

  • props - significa propiedades de JMeter. Básicamente es lo mismo que las variables, pero la visibilidad de las variables se limita solo al grupo de subprocesos actual y las propiedades son "globales"

  • prev: abreviatura de SampleResult anterior. Parece ser exactamente lo que estás buscando. Puede obtener / configurar la hora de inicio, la hora de finalización, el tiempo de ejecución, la latencia, la URL, el código de respuesta, el mensaje de respuesta, etc. Consulte JavaDoc para obtener información completa. Ejemplo de uso:

    String code = prev.getResponseCode(); String message = prev.getResponseMessage();

  • datos: matriz de bytes que contiene datos de respuesta del muestreador principal

    String samplerData = new String(data); System.out.println(samplerData);

  • registro: se puede utilizar para imprimir algo en el archivo jmeter.log

    log.info("This line has been written by Beanshell Post Processor");

Consulte Cómo usar BeanShell: la guía de componentes incorporada favorita de JMeter para obtener más detalles y ejemplos de la vida real.