这个问题也是软件测试面试时经常遇到的一个问题,解决的办法很多,各种方法都有优劣,接下来就好好探讨下。

要想把这个问题想清楚,其实关键点是首先要想清楚手机号和验证码登录的过程,过程清楚了,解决思路也就清楚了。

第一步:手机号验证码登录的过程:

1、页面输入手机号,点击获取验证码。

2、后端收到手机号,校验手机号格式的正确性,然后调用短信网关发送验证码, 短信网关只是负责发送短信, 要发送的手机号和短信内容是我们的系统给短信网关的, 所以我们系统肯定在一个地方存这个手机号和验证码的对应关系, 有可能缓存(redis),有可能数据库,也有可能其他地方。

3、手机收到短信验证码。

4、页面输入验证码点击提交。

5、系统收到登陆请求的手机号和验证码, 然后在保存手机号验证码对应关系的地方取出对应手机号的验证码,然后比较两个验证码是否相等,相等就登陆成功,不相等就登录失败, 当然还得在验证码的有效期内。

第二步:分析在哪里可以解决自动登录的问题?

其实就是第五步验证过程是判断我们是否登录成功的关键一步,那么搞定第五步有哪些方案呢?

方案1:让后端设置一个万能码, 这样登录的时候,如果是这个码,就直接默认登录成功,相当于一个后门, 这个时候需要和后端确认下,只有指定的手机号这个万能码才生效, 这样可以最大程度避免有万能码代码意外发到线上环境带来的损失。

方案2:让后端去掉短信验证码登录过程,直接输入手机号就可以登录, 这样代码改动大, 而且错误代码发到线上风险很大。

方案3:自己手工拿到登录的认证信息,比如token,然后写入到代码中,这样可以跳过登录环节,不好的就是每次运行都要手工操作。

其实可以看出方案1、方案2、方案3,都有一些不好的地方,不是需要开发协助修改代码逻辑, 就是弄起来比较麻烦, 接下来就有一个更好的方案。

最优方案:从第2步可以看出,短信的验证码其实是存在某个地方的,那么我们可以直接通过操作数据库、操作redis、或者调用接口获取到验证码,然后就可以输入正确的验证码了,这样不需要开发修改代码,也不麻烦, 就是我们写自动化脚本的时候需要多一点知识,但是跑通之后效果比前面的方案都要好。

从上面也可以看出, 现在做自动化不仅仅说我们会selenium、appium就完事了,其实自动化要能好好运用起来,代码操作数据库、操作redis、操作接口的技能也需要掌握,灵活运用到自动化中,会有事半功倍的效果。

自动化测试遇到手机号验证码怎么办?相关推荐

  1. 保存验证码的方法_selenium自动化测试:6.验证码处理

    0.前言 如果可以的话,请先关注(专栏和账号),然后点赞和收藏,最后学习和进步.你的支持是我继续写下去的最大动力,个人定当倾囊而送,不负众望.谢谢!!! 1.前提 基于win10专业版64位系统+64 ...

  2. Pythonseleniumtesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考

    Python&selenium&tesseract自动化测试随机码.验证码(Captcha)的OCR识别解决方案参考 参考文章: (1)Python&selenium& ...

  3. spring boot结合shiro实现用户-角色-权限的控制(包含用户名密码登陆和手机号验证码登陆)

    spring boot整合shiro实现权限校验 1.首先导入项目所需jar包 <parent><groupId>org.springframework.boot</gr ...

  4. 网易云接口手机号验证码验证登录

    今天在写微信小程序时(模仿网易云音乐,根据网易云官方api接口文档,登录接口测试) 1.账号密码登录 //失效 2.手机号验证码登录 //无数据 3.邮箱登录 !!!可行 但是手机号验证码登录还是可以 ...

  5. 抖音实战~手机号验证码一键注册登录流程(限制手机终端登录)

    文章目录 一.手机号+验证码 二.前端 2.1. 点击登陆流程 2.2. 点击登录源码 三.后端登录 3.1. 登录流程图 3.2. 流程简述 3.3. 手机号验证码登录流程 一.手机号+验证码 二. ...

  6. golang实现手机号验证码登入

    1. 调用的时序图 2. 安装redis 因为短息验证码是存在redis服务中,所以需要安装redis,redis的安装比较简单可以自行安装即可. 3.  启动redis 4. 监听端口代码 pack ...

  7. 浅谈自动化测试中的验证码处理方法小总结

    今天跟大家聊一聊自动化测试中的验证码处理方法一些小总结,希望对你们有帮助,有说的不好的地方,还请多多指教! 目前,不少网站在用户登录.用户提交信息登登录和输入的页面上使用了验证码技术.验证码技术可以有 ...

  8. 使用Springboot StringRedisTemplate 在单位时间内对发送手机号验证码次数做限制,半小时最多发送5次验证码

    通常我们在做通过手机号检验,发送短信验证码之类接口的时候,在单位时间内,要对发送的次数做限制,防止恶意刷接口,短信类接口毕竟还是收费的. 首先我们需要在springboot 项目中引入Redis &l ...

  9. 小程序手机号验证码登录

    这是我最近的一个项目--微信小程序 实现手机号- -验证码登录,涉及到了提交参数时需要加密.加密所采用的方式也是按照要求,严格采用16位小加密的MD5的加密形式. login.wxml <vie ...

最新文章

  1. android单线字体,Android自定义字体
  2. ARTS打卡计划第一周-Share-系统字典模块的设计
  3. C++ 协程与网络编程
  4. 控制面板项 .cpl 文件说明
  5. 有BRT,为啥还建公交港湾
  6. linux系统解锁用户百度,详细到没朋友,一文帮你理清Linux 用户与用户组关系~
  7. 章子欣父亲发声:感谢提供帮助的媒体,包括百度
  8. 封年大促|年货节优秀PSD分层模板
  9. jetson nano 相关设置(开机自动登录、取消休眠和屏保、开机自启动程序)
  10. 为什么要使用git pull --rebase?
  11. 苹果macPython语言开发环境:PyCharm pro
  12. linux ssh x11,ssh服务器的x11 forwarding报错的解决
  13. Linux命令之find命令
  14. Photoshop 2021(Ps)下载安装及详细安装教程
  15. python抓取word里的拼音_[DIY]给word中的汉字批量加、修改拼音(word全篇加拼音)(旧版VBA程序,缺点比较多)...
  16. 整合UWALOHA和VBF
  17. YARN任务监控界面Aggregate Resource Allocation指标解析
  18. 随手笔记Cookie
  19. 罗永浩放话要当带货一哥,意思是要超越李佳琦了?
  20. linux 实时性 100ms,实时录播延迟长达100ms

热门文章

  1. jQuery 用each() 添加click事件
  2. 移动端 iPhoneX安全区域 小程序、H5页面适配
  3. Android仿小红书启动页平行动画
  4. Python pandas.DataFrame.max函数方法的使用
  5. Unity硬解播放8k视频
  6. 怎么解决mysql中文显示_怎样解决关于MySQL显示中文的问题?
  7. Redmibook pro 15 开机报错No bootable device
  8. 把list集合转换成另一个list集合的三个方法
  9. c语言六个数码管显示123456,用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF,六个数码管是连续不同的六个数?...
  10. 小嘿嘿之群体智能优化算法