新闻详情

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

发表时间:2020-11-12 09:47
这个是目前基本所有系统都支持的一个登陆方式,这个问题也是是测试面试时经常遇到的一个问题,解决的办法很多,各种方法都有优劣,接下来就好好探讨下
要想把这个问题想清楚,其实关键点是首先要想清楚手机号和验证码登录的过程,过程清楚了,解决思路也就清楚了
第一步:手机号验证码登录的过程:
1、页面输入手机号,点击获取验证码
2、后端收到手机号,校验手机号格式的正确性,然后调用短信网关发送验证码, 短信网关只是负责发送短信, 要发送的手机号和短信内容是我们的系统给短信网关的, 所以我们系统肯定在一个地方存这个手机号和验证码的对应关系, 有可能缓存(redis),有可能数据库,也有可能其他地方
3、手机收到短信验证码
4、页面输入验证码 点击提交
5、系统收到登陆请求的手机号和验证码, 然后在保存手机号验证码对应关系的地方取出对应手机号的验证码,   然后比较两个验证码是否相等,相等就登陆成功,不相等就登录失败, 当然还得在验证码的有效期内
第二步:分析在哪里可以解决自动登录的问题
其实就是第五步验证过程是判断我们是否登录成功的关键一步,那么搞定第五步有哪些方案呢?
方案1:让后端设置一个万能码, 这样登录的时候,如果是这个码,就直接默认登录成功,相当于一个后门, 这个时候需要和后端确认下,只有指定的手机号这个万能码才生效, 这样可以最大程度避免有万能码代码意外发到线上环境带来的损失。
方案2:让后端去掉短信验证码登录过程,直接输入手机号就可以登录, 这样代码改动大, 而且错误代码发到线上风险很大
方案3:自己手工拿到登录的认证信息,比如token, 然后写入到代码中,这样可以跳过登录环节, 不好的就是每次运行都要手工操作
其实可以看出方案1   方案2   方案3   都有一些不好的地方,不是需要开发协助修改代码逻辑, 就是弄起来比较麻烦, 接下来就有一个更好的方案
最优方案:从第2步可以看出, 短信的验证码其实是存在某个地方的,   那么我们可以直接通过操作数据库、操作redis、或者调用接口获取到验证码,然后就可以输入正确的验证码了,这样不需要开发修改代码,也不麻烦, 就是我们写自动化脚本的时候需要多一点知识,但是跑通之后效果比前面的方案都要好。
从上面也可以看出, 现在做自动化不仅仅说我们会selenium、appium就完事了, 其实自动化要能好好运用起来, 代码操作数据库、操作redis、操作接口的技能也需要掌握, 灵活运用到自动化中,会有事半功倍的效果。
上面是多动多得的个人理解, 如有异议,可以在群里面讨论哦。

dollar-499481_1920.jpg