自动化过程中验证码的解决思路

很多系统为了安全起见,会在关键节点要求用户输入验证码,如避免密码暴力破解,或自动化程序的刷票,抢购等行为。

验证码也是各式各样,如图片验证码,手机验证码,滑块验证码等,随着破解能力的增强,验证码也是日趋复杂。

验证码对保护系统安全可以说功不可没,但是对于我们自动化测试人员而言却是个麻烦。

由于验证码每次都不一样,我们代码里如果写成固定值,那么就会操作失败。相当于验证码也把我们自动化测试人员拒之门外了。

那么自动化人员处理处理这种情况呢,一般我们解决方法分为以下几种:

屏蔽验证码

万能验证码

破解验证码

Cookie跳过验证码

A. 屏蔽验证码,比如设置个配置项允许用户选择登录时不需要输入验证码。

B. 万能验证码,好比万能钥匙,无论你给的是什么,我的万能验证码都是可以验证通过的,不过这种比较有风险,万一泄露出去,系统的验证码就形同虚设了。

以上两种方式,都需要开发人员的额外的代码实现。如果测试人员想自力更生自己解决这个问题呢:

**C. 破解验证码:**目前市面上有很多破解验证码的工具,供大家使用如tesseract-ocr或百度AI文字识别接口等。但是由于验证码类型各异,复杂度也与日俱进,导致我们破解时成功率比较低。成功率比较低的情况对自动化而言影响是很大的,导致很多用例由于验证码而失败,或者需要反复不断的尝试才可能成功,导致时间浪费。基于这一点,破解验证码也不是一个好的解决方案。

D. 通过特殊手段跳过验证码验证阶段,比如不做登录操作,而且直接做后续请求,请求时带正常登录用户的可用cookie,那么是不需要登录就可以操作成功的,从而避免了验证。

这种方式也是有以上4种方法,我们比较推荐通过配置临时去掉验证码这种方式。

你有更好的解决方法吗?欢迎讨论哟。

今天的内容就学习到这里了,每个工作日小编都会更新一个有关测试的小知识,希望大家多多关注我们,一起来学习喔!

相关推荐
卓怡学长6 小时前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
闻道且行之8 小时前
TurboOCR:基于PP-OCRv6的极速Windows离线OCR工具,深度解析3.4GB依赖背后的技术架构
c++·人工智能·python·qt·机器学习·ocr
测试员周周8 小时前
【skills5】一份 spec 生成 k6/JMeter/Locust:性能压测 + 全站截图,上线前的双保险
功能测试·网络协议·测试工具·jmeter·http·自动化·集成测试
J-Tony119 小时前
【Redis】 Redis 是单线程还是多线程
服务器·数据库·mysql
这个DBA有点耶9 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
IvorySQL9 小时前
PG 日报|SQL/PGQ 图查询基于联接重写机制实现
数据库·人工智能·sql·postgresql·区块链·ivorysql
许彰午9 小时前
95_Python内存管理与垃圾回收
开发语言·python
骄阳如火10 小时前
Python 性能深度剖析:从“被诟病的慢”到“Rust 重塑”的拐点
python
满怀冰雪10 小时前
03-第一个 Paddle 程序:Tensor 创建、计算与设备管理
人工智能·python·paddle
CClaris11 小时前
大模型量化从0到1(九):用 llama.cpp 把模型转成 GGUF 并跑本地推理
人工智能·pytorch·python·深度学习·llama