您的位置:首页 > 数据库 > Redis

jmeter 使用时间戳去redis获取验证码实现有验证码登录接口测试

2017-09-29 11:10 931 查看
jmeter作为一款易学易用的接口压测工具,已经受到大多数啄木鸟同学的青睐。

今天要记录的是一个最简单的登录接口测试,但是又另一部分人头疼不已,只因为  老先生说:自动化止于验证码~~~~~




不单是jmeter接口测试工作,即使是Python UI自动化,验证码也是一个难缠的问题,当然对于python已经有比较成熟的图片识别工具 pytesseract.image_to_string(image).

下面介绍一种可以既不用求开发大爷隐去验证码 也不用识别图片的情况。

首先前提是 验证码获取的机制是 根据请求的时间戳 缓存在redis中,当然相当一大部分开发大大都是这么做的。

环境准备:(后续文章介绍)

好了 开始正题。

对于通过时间戳这种问题,原理是请求登录页,在redis中生成一个键值对(time:code),我们要做的就是将这个time保存下来,然后去redis读code,在用这个键值对做登录操作; 那么难点来了,请求中的paramater怎么保存为变量呢~~~我不知道有没有大神会,我是肯定不会了。

那怎么办呢?

好在,对于redis来讲,时间戳的限制一般不会设置那么严格(强迫症的开发大大除外),那么就好办了!!!!!!!!!

我们可以在jmeter外围设置一个全局的时间变量,后续的请求都是用这个变量就行了啊




首先,我们要有一个jar包,这个jar包中就是我们自己写的去redis中获取验证码的方法。(jar包的简单生成会后续介绍http://blog.csdn.net/zike6524/article/details/78132931)

好了,开始我们的工作

1.在我们的测试计划中引入jar包,这个后续会用到的哦


2.新建线程组(不细说)

3.设置时间戳变量,这个用时间获取函数直接获取就行

新建一个beanshell sampler(前后最好养成有debug sampler的习惯)



4.将timer传参进行访问首页地址,以使redis增加一个对应的键值对(time,code)



5.好了 这一步就要用到jar包中的方法了,通过方法getVerifyCode.getCode 获取redis中对应timer时间的value值,也就是验证码;



6.最后通过传入需要的参数将用户名密码,时间戳以及验证码传给服务器进行登录



执行脚本,通过结果数查看,可以看到登陆成功,且返回有效data



至此,我们就可以完成带有验证码的登录接口测试了。

当然这只是基本的实现,实际需要根据不同项目需求加入不同的断言以及不同的监听,以判断接口是否符合需求。

个人拙见,如有不对之处,请多指教。

转载请注明出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: