在进行接口测试的时候,针对登录功能,大多数网站为了考虑网站的安全性,都会使用验证码功能,在进行测试的时候,如何读取到验证码的值也是一个很关键,这篇文章希望能给大家提供一些思路和方法。

一、验证码的类型

验证码可以分为:短信验证码、图形验证码、语音验证码、答题验证码。 
1、短信验证码:输入手机号码,获得验证码,一般验证码为数字。 
2、图形验证码:网页中注册、登录等使用的验证码,一般是服务器后端生成的验证码后,将验证码绘制生成图片。 
3、语音验证码:服务器利用语音技术生成的验证码。 
4、答题验证码:如12306等网站,从题库中随机选择题目,并将答案进行存储

二、验证码在服务端的存储设计及测试方案

验证码服务端存储设计:服务器生成验证码后,存储起来(缓存或者持久化),以方便用户提交验证码时进行验证。 
1、存储在本进程内存中:服务器生成验证码后,即将验证码存储在服务器中,一般以session方式进行存储。 
优点:性能好 
缺点:扩展性查、占用服务器内存 
如何测试:其他进程是访问不到服务进程的,只能在开发时服务进程内增加验证码查询接口,以方便验证,上线时,将此接口移除或禁用。 
2、存储在文件中 
3、存储在数据库中 
优点:可供多个服务进程查询 
缺点:性能稍差,占用数据库服务器性能 
如何测试:(1)进程内提供接口,方便查询(2)直接进行数据库查询 
4、存储在Redis等nosql数据库中 
优点:性能高、一般nosql数据库提供集群功能,可靠性高 
如何测试:调用nosql的客户端驱动,进行查询

三、其他针对验证码的测试方案

除了上述提到的根据不同存储设计来测试验证码之外,对于图形验证码还可以选择采用图形识别技术,一般的图形验证码都可采用OCR库进行破解。