在进行接口测试的时候,针对登录功能,大多数网站为了考虑网站的安全性,都会使用验证码功能,在进行测试的时候,如何读取到验证码的值也是一个很关键,这篇文章希望能给大家提供一些思路和方法。一、验证码的类型
验证码可以分为:短信验证码、图形验证码、语音验证码、答题验证码。
1、短信验证码:输入手机号码,获得验证码,一般验证码为数字。
2、图形验证码:网页中注册、登录等使用的验证码,一般是服务器后端生成的验证码后,将验证码绘制生成图片。
3、语音验证码:服务器利用语音技术生成的验证码。
4、答题验证码:如12306等网站,从题库中随机选择题目,并将答案进行存储
二、验证码在服务端的存储设计及测试方案
验证码服务端存储设计:服务器生成验证码后,存储起来(缓存或者持久化),以方便用户提交验证码时进行验证。
1、存储在本进程内存中:服务器生成验证码后,即将验证码存储在服务器中,一般以session方式进行存储。
优点:性能好
缺点:扩展性查、占用服务器内存
如何测试:其他进程是访问不到服务进程的,只能在开发时服务进程内增加验证码查询接口,以方便验证,上线时,将此接口移除或禁用。
2、存储在文件中
3、存储在数据库中
优点:可供多个服务进程查询
缺点:性能稍差,占用数据库服务器性能
如何测试:(1)进程内提供接口,方便查询(2)直接进行数据库查询
4、存储在Redis等nosql数据库中
优点:性能高、一般nosql数据库提供集群功能,可靠性高
如何测试:调用nosql的客户端驱动,进行查询
三、其他针对验证码的测试方案
除了上述提到的根据不同存储设计来测试验证码之外,对于图形验证码还可以选择采用图形识别技术,一般的图形验证码都可采用OCR库进行破解。