jmeter进阶——链接redis
实现原理:添加redis插件,然后通过配置配置Redis Data Set或者使用BeanShell脚本来链接redis,就可以把redis的数据取出来进行参数化使用
一、Redis Data Set插件插件下载
1、下载Plugins Manager JAR文件:https://jmeter-plugins.org/get/ 2、把下载的文件复制到jmeter文件夹下的lib/ext文件(有的话就不用复制了)
3、重新打开jmeter就可以看到插件管理Plugins Manager (选项-Plugins Manager)
或者直接在右上角的图标打开
4、通过插件管理安装redis插件
在Available Plugins 搜索redis勾选然后点击右下角的Appil Changes and Restart JMeter 等待结束就可以了
二、链接redis
方式一、使用配置元件Redis Data Set 链接
设置Redis Data Set详情
Redis key:Redis中的key,Redis数据库中列表(有序数据)或集(无序数据)的名称
Variable Names:由数据集导出到测试元素的变量的名称(设置取出来的value存放在哪个变量中)
Delimiter:存储在Redis列表或集合中的行中使用的分隔符(取出的value有多个值时,变量名之间的分隔符)
Date Sources Type:数据源类型,有List、Set两种选择,String、hash、zset类型取不到(在JMeter 3 中RANDOM_REMOVE 对应 List,RANDOM_KEEP 对应 Set)
Timeout for connection in ms:连接超时时间
Recycle data on use:是否循环使用数据
Redis server host:Redis服务器地址
Redis server port:Redis服务器端口
Password for connection:连接Redis的密码
Database:数据库名称,连接Redis的第几个数据库,默认为0
whenExhaustedAction:当Redis连接池被分配时的操作,GROW(自动新建一个实例)、BLOCK(阻塞,超过等待时间后抛出异常)、FAIL(失败,直接抛出异常)key值得获取:
后面引用设置的变量即可,变量会把取到的redis数据反馈出来(建议随便用个请求验证一下redis的取值是否正确)
方拾二、使用BeanShell脚本实现全面操作redis
1、先安装redis的插件如上,不过多讲解
2、BeanShell脚本通过jedis操作redis
代码如下
import redis.clients.jedis.Jedis;
import org.apache.commons.lang3.StringUtils;
String host = "${服务器的ip}"; //服务器地址
int port = 6379; //端口号 不要加引号
String password = "${这是redis的链接密码}"; //redis密码
int index = 0; //redis db 用的是哪个redis库
String key = "${key值}"; //key值
Jedis jedis = new Jedis(host, port);
if(StringUtils.isNotBlank(password)){
jedis.auth(password);
}
jedis.select(index);
String redisGetResult = jedis.get(key);
vars.put("${自定义}",redisGetResult); //将key值保存为变量
三、对redis的取值处理
通常取出的redis值都不是我们想要的,或者说我们只需要其中的一部分
此时可以把取值利用接口的方式通过边界值提取器提取出来(推荐这个提取器)
例如
这是一个存储验证码的redis存储结果,我们仅仅需要一个验证码
因为上一步已经把redis数据取出来的,我们需要做进一步提取,提取出我们所需要的。
思路:由于验证码前面两串字符串都是变量我们不方便定位可以通过“:”进行提取,这时验证码的左边界是“:”有边界也是“:”,所以我们可以发送一个求情,redis取出的结果做传参,然后提取出我们所需要的验证码;
1、添加一个http请求把redis的取值当做参数
然后把请求URL中的验证码尽心提取:添加边界提取器
我们不确定此redis的取值是否正确(是否取出)可以在http请求下添加一个断言,判断是否存在:3(发送了验证码之后直接获取,所以:3是不变的)最后我们再新建一个http请求把提取出来的验证码做参数输入查看是否是我们需要的