Jmeter bsf处理器(复杂逻辑的测试脚本) 打印 E-mail
作者:我是谁?   
2013-12-27 18:34

[whoistester.com]

什么是bsf,  Bean Scripting Framework(BSF)是一个支持在Java应用程序内调用脚本语言 (Script),并且支持脚本语言直接访问Java对象和方法的一个开源项目。 jmeter 使用bsf处理器, 无非就是可以编写自己的script脚本代码, 来实现更强大的测试脚本。

下面这个例子告诉你,什么时候必须使用jmeter的bsf处理器, 什么时候使用正则表达式提取器就足够了。(以下例子均为假设,并不真实存在)

需要使用bsf的例子 使用正则表达式提取器即可的例子
1.  访问 www.whoistester.com/a.php 

1.  访问 www.whoistester.com/b.php

2. 返回了一个json(协议)字符串 其中包含了一个key为

passwd, 他的值为mypasswd. 

 

2. 返回了一个html页面包含如下一个链接

 

我们想找到 http://blog.whoistester.com  这个字符串

并赋予到变量${url} 

 

3.  将mypasswd 这个值抓取到,并赋给${mypasswd}

 

3. 直接利用征则表达提取器提取到http://blog.whoistester.com,

字符串并赋予给${url}变量

4. 对${mypasswd}的值进行md5加密,

并md5加密后的字符串赋到 ${md5mypasswd}

4. 然后访问${url}即可  http://blog.whoistester.com
5. 然后使用${md5mypasswd}进行下一步的操作   如何使用正则表达式提取,请浏览

通过例子对比, bsf可以通过编写我们自己的脚本,进行更复杂的逻辑处理。 通常jmeter自己提供的方法无法满足我们的需求时,我们则需要用bsf自己编写脚本,来实现自己的复杂处理逻辑. 

bsf 有前置与后置处理器。后置处理器,通过  prev.getResponseDataAsString()可以获得该sample请求的返回数据。 我们将返回的数据得到我们想要的数据,然后可以进行逻辑运算处理。

然后通过 vars.put("key", value); 放入到jmeter的变量里。 

这样我们在后面的sample或者其他类型的处理器里,就可以使用$key 这个变量了。  

额外说的是, 尽量不要使用javascript的正则表达式去解析html,xml。 这是痛苦的一件事情,但如果你需要获取少量的数据, 当然你可以使用正则表达式的方法。 一个最好的办法是, 服务端尽量返回json格式。 

具体例子请阅读jmeter 之 BSF,BeanShell


 

发表评论


安全码
刷新