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
至此,我们就可以完成带有验证码的登录接口测试了。
当然这只是基本的实现,实际需要根据不同项目需求加入不同的断言以及不同的监听,以判断接口是否符合需求。
个人拙见,如有不对之处,请多指教。
转载请注明出处
今天要记录的是一个最简单的登录接口测试,但是又另一部分人头疼不已,只因为 老先生说:自动化止于验证码~~~~~
不单是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
至此,我们就可以完成带有验证码的登录接口测试了。
当然这只是基本的实现,实际需要根据不同项目需求加入不同的断言以及不同的监听,以判断接口是否符合需求。
个人拙见,如有不对之处,请多指教。
转载请注明出处
相关文章推荐
- linux下使用ant+Jmeter+Jenkins实现接口测试自动化
- HTML5使用localStorage实现获取验证码保存倒计时时间
- JMeter实现bugfree登录接口测试
- 使用redis计数来控制单位时间内对某接口的访问量,防止刷验证码接口之类的
- 使用htmlunit工具来实现对新浪的模拟登录获取cookie操作(也可适用其他网站,最好是无验证码的)
- 接口测试-压力-Jmeter初步使用
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- 枚举的诸多使用方法enum--构造方法,普通方法method,获取枚举,实现接口
- 使用JSP、servlet和ajax实现无刷新获取验证码
- 使用jMeter测试Solr服务接口
- Jmeter实现WebSocket协议的接口和性能测试方法
- 注册时手机获取验证码倒计时,使用CountDownTimer类轻松实现倒计时功能
- 转:Jmeter之使用CSV Data Set Config实现参数化登录
- redis使用jmeter测试
- 使用Spring3.0的AOP结合log4j实现接口方法执行时间记录
- 一般处理程序获取WEB窗体创建的验证码需要实现session相关接口
- windows下C语言获取精确到毫秒的时间的几个接口的测试
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- 绑定新浪微博API 实现验证 登录 返回接口获取信息
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法