JMeter的。 BeanShell PostProcessor

时间:2014-07-28 16:03:12

标签: jmeter beanshell

我已经通过jmeter中的bean shell脚本编写,但我没有找到 这方面的任何一个例子,它如何在jmeter中使用,以及哪种方式。读取 采样器值等 任何人都可以通过example.In解释Jmeter中的bean shell脚本 我们编写脚本的beanshell post / pre processor脚本。 我正在努力解决它的实际用途。请解释一下 有了这个。对我或其他人的理解也会有很大的帮助 使用它。

4 个答案:

答案 0 :(得分:42)

如果您查看Beanshell Post Processor的“脚本”部分,您将看到以下内容:

Script(variables: ctx, vars, props, prev, data, log)
  • ctx - 代表JMeterContext,提供对JMeter Context API的访问(有关详细信息,请参阅JavaDoc)。用法示例:

    int threadNum = ctx.getThreadNum(); // get current thread number 
    
  • vars - 代表JMeterVariables。使用vars,您可以获取/设置变量值。

    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 - 代表JMeter属性。基本上与变量相同,但变量可见性仅限于当前线程组,属性为“全局”

  • prev - 与之前SampleResult的简写。似乎正是您正在寻找的。您可以获取/设置开始时间,结束时间,执行时间,延迟,URL,响应代码,响应消息等。有关综合信息,请参阅JavaDoc。用法示例:

    String code = prev.getResponseCode(); 
    String message = prev.getResponseMessage();
    
  • data - 包含父采样器响应数据的字节数组

    String samplerData = new String(data);
    System.out.println(samplerData);
    
  • log - 可用于将内容打印到jmeter.log文件

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

有关详细信息和实际示例,请参阅How to use BeanShell: JMeter's favorite built-in component指南。

答案 1 :(得分:4)

如果您想在请求之间执行计算,Beanshell将帮助您在jmeter中实现它。我们有Beanshell SamplerBeashell Pre ProcessorBeanshell Post Processor。例如,创建一个线程组并添加一个beanshell sampler,如图所示。 在脚本下输入

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

并在启用日志查看器的情况下运行(选项菜单>日志查看器)。

enter image description here

您可以使用beanshell脚本调用jar的java方法(应该在jmeter_folder / lib / ext中)。

Beashell预处理器用于执行计算并将值与请求一起发送。假设您要在发送之前加密用户名和密码。您可以提供凭据,使用beanshell / java方法对其进行加密,并将其设置为beanshell脚本(vars.put("variablename",variablevalue))中的变量。您可以将变量添加到请求http://test.com?parameter=${variablename}

类似地,Beashell PostProcessors用于处理响应。假设您要解密响应中的值,提取值(使用正则表达式提取器)并使用beanshell脚本解密。

答案 2 :(得分:1)

例如,我使用JMeter创建客户。如果回复邮件为Created,请将结果设置为Pass;否则,将结果设置为Fail,将失败消息设置为Note:Creation failed。步骤是:

  1. 使用TTP Request Sampler汇总http请求。
  2. 在其下添加BSF Assertion Sampler
  3. 查找我需要在http://jmeter.apache.org/api/index.html中使用的方法。由于我需要操纵Http Request Sampler,因此我直接转到包org.apache.jmeter.protocol.http.sampler。如果您熟悉这些方法,请跳过此步骤。
  4. enter image description here

    1. 完成BSF采样器。 prev代表之前的样本结果 enter image description here

答案 3 :(得分:0)

您可以使用BeanShell(或更好的:JSR223 PreProcessor / PostProcessor / Sampler)脚本引擎来计算测试所需的参数。我将它用于几种不同的操作:

  • 选择要从目录上传的随机文件
  • 计算上传/下载授权的hmac密钥(Swift必需)
  • 为特定环境设置变量(基于参数)

这是一个示例脚本,用于选择随机文件并将文件的详细信息写入变量,您可以在接下来的步骤中访问:

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);