自动化在测试登录模块时,验证码这一块估计是很多人苦恼的一大难点,在很多地方都有看到测试人员在问这个问题。
对于web应用来说, 大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的, 对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性。但对于测试人员来说, 不管是进行性能测试还是自动化测试都是一个棘手的问题。
下面来谈一下处理验证码的几种方法。
去掉验证码
这是最简单的方法, 对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚本是要在正式环境跑, 这样就给系统带来了一定的风险。
设置万能码
去掉验证码的主要是安全问题,为了应对在线系统的安全性威胁,可以在修改程序时不取消验证码, 而是程序中留一个“后门”—设置一个“万能验证码”,只要用户输入这个“万能验证码”,程序就认为验证通过,否则按照原先的验证方式进行验证。
#coding=utf-8
import random
#生成0到10之间的随机数
#d = random.uni form(0, 10)
#print d
#生成一个1000到9999之间的随机整数
d = random. randint (1000, 9999)
print u"生成的随机数:8d”8d
i = input(u"请输入随机数:")
print i
ifi==d:
print u"登录成功! !"
elifi==1111:
print u"登录成功! !"
else:
print u"请重新输入验证码!”
运行结果:
>>>=======================RESTART===========================
生成的随机数:3764
请输入随机数:1111
1111
登录成功!!
>>>=======================RESTART===========================
>>>
生成的随机数:3763
请输入随机数:3763
3763
登录成功!!
>>>=======================RESTART===========================
>>>
生成的随机数:1928
请输入随机数:1354646
1354646
请重新输入验证码:
random
random用于生成随机数
randint()
randint()方法用于生成随机整数, 传递的两个参数分别是随机数的范围,randint(1000,9999)第二个参数要大于第一个参数。
我们要求用户输入随机数,并且对用户输入做判断,如果等于生成的随机数那么,登录成功, 如果等于1111也算登录成功,否则失败。那么等于1111的判断就是一个万能码。
验证码识别技术
例如可以通过Python-tesseract;来识别图片验证码,Python-tesseract是光学字符识别Tesseract;OCR引擎的Python封装类。能够读取任何常规的图片文件(JPG,;GIF;,PNG;,;TIFF等)。不过,目前市面上的验证码形式繁多, 目前任何一种验证码识别技术,识别率都不是100%;。
如果你已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的,都可以加入我们1033482984,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!微信公众号【软件测试小dao】
燃烧秀发输出内容,如果有一丢丢收获,点个赞鼓励一下吧!