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:
- Ensamble la solicitud de http usando
TTP Request Sampler
. - Añadir una
BSF Assertion Sampler
debajo de él. - 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 paqueteorg.apache.jmeter.protocol.http.sampler
. Si está familiarizado con esos métodos, omita este paso.
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.