上次面试时被问到的一个有关于用例流程图的问题:在你的网站上添加了一个判断异常登录的模块(根据ip切换等规则判断异常,如短时间内ip地址在距上次登录地址非常远的地方),那么网站的用户登录流程是怎样的?
在这样的一次登录中主要涉及两个判断,一个是上次登录是否存在异常(指的是账号密码都对但是验证失败最后放弃登录的),另一个是用异常登录模块判断本次登录是否可疑。在面试时完成的不是非常好,主要原因1是将这两个判断分开用不同的判断框走,然而其实它们之间存在很多交叉;2、在1的情况下却没有整体的思路,直接上手开始画,然后想到新的规则再添加(经过提醒,这是一个很坏的习惯)。现在尝试用完整的思路去完成这个看似很简单的登录流程。
首先确定一下策略:上次登录异常本次提醒并建议修改密码,本次登录异常强制手机验证登录。整理一下两个判断中可能出现的情况:
case1:上次登录异常、本次登录异常:手机验证登录或修改密码(也会用到手机验证)
case2:上次登录异常、本次登录正常:建议修改密码
case3:上次登录正常、本次登录异常:手机验证登录
case4:上次登录正常、本次登录正常:正常登录
可以看到实际上就存在4个case,也不会出现验证跟修改密码交错的情况。那么整个流程其实非常简洁,如下:
4个case的分支是跟我第一次解决时候主要的差别,将两次登录判决综合考虑再走下一步,并没有强调上次登录跟本次登录的先后顺序。这个流程图还有一些细节没有加入,比如在修改密码的验证中这里只针对手机验证码的验证成功失败,而事实上可能会存在登录时密码正确,但是修改密码时密码却忘了,这时候下一步会指向类似找回密码的操作。