美文网首页
解决问题的姿势很重要

解决问题的姿势很重要

作者: 吧啦啦小汤圆 | 来源:发表于2018-01-16 23:52 被阅读102次

    问题描述:

    今天在跑app主流程时,有一个功能出现了bug,提示的message是:

    No message available
    

    前提: 这个功能之间都是没问题的
    那现在为什么会出现问题呢?

    猜想: 有可能是这个两天写测试重构代码,导致出现了问题。

    解决问题:

    验证猜想:

    • 带着这个猜想去了看代码,发现好像关于这个bug的接口没有做大的改动,紧接着就去测了这个接口,测试接口结果是没有问题的。

    结果:

    • 验证猜想错误 !

    问题聚焦——排除法:

    • 首先这个功能的前置条件都是满足的,比较必须设置取换车地址才能使用该功能,所以排除其他功能的影响
    • 前端提示的No message available 这个错误message ,也没有在后端找到,该接口中也没有返回这样的message
    • 查看了后端的log ,并没有报错,而且是运行成功的状态
    • 现在看到后端接口是没有问题的,那就能断定一定不是后端的问题吗?

    这就比较奇怪了,既然后端没有问题,难道是前端的问题吗?

    思维陷阱:
    当时自己的想法是,这就肯定不是后端的问题,一定是前端的代码有问题,想着是不是应该找到APP前端的人来看看这个bug。

    解决过程:
    而今天就只有我和Teach Lead 在项目,其他人都不在
    这时候Teach Lead 来协助我解决这个问题了,他引导着我来解决这个问题,他说咱们换一个账号试试,我切换了账号依然是同样的问题。

    于是他说咱们使用同一个账号,在其他环境,尤其我们的生产环境测试一下这个功能是不是好的
    这时候诡异的事情产生了,结果如下:

    • 同一个账号,在生产环境该功能是好的
    • 而在测试环境却有bug

    而这段时候APP前端是没有改动代码的,后端是在不断的改代码,那就一定是后端的问题了。

    现在的问题是聚焦在后端上,但是目前看来后端接口没有问题,运行log也正常,没有错误,那就更诡异了

    进一步探索:

    • TL去查看了前端APP的接口调用,发现这个功能调用的是v2版本的接口,但是在后端的代码中没有找到v2的这个接口,这个接口只有v3的
    • 查看了v2接口所在文件的修改历史,发现这个v2的接口在最近的某一天被dev删掉了,估计当时是以为这个接口已经有v3了,v2就没用了,就删除了,就导致了这个bug

    最后把删除的接口补回来,bug就解决了

    这个bug终于解决了,不过过程真的是山路十八弯,在没有前端协助的情况下,找出了问题所在,其实还是解决问题的方式很重要!

    不过比较郁闷的是,今天这个bug,相当于是想后端请求了一个不存在的接口,虽然后端给前端返回了错误:


    但是在后端一切运行正常,在代码运行日志中并没有错误产生,所以让人很难定位问题所在,这也算是代码的漏洞.

    今天这个bug之后,给项目加上了一个错误处理机制,当请求一个不存在的url 时,会有错误处理,并且记录到log中,方便以后查看。这样就不至于以后类似问题,后端没有做任何处理,并且看似运行正常,那就懵逼了。并且系统抛出的异常会很让人confuse,无法定位错误的原因。

    解决方式是这样:解决方式

    回想下:所以说当初的思维陷阱很可怕,后端的接口对了就一定不是后端的问题了吗?
    答案一定是:不一定
    所以还是得找到正确的打开方式,不早早下结论,排除问题,聚焦问题。

    总结:
    • 对于像为了版本兼容,相同接口的有多个版本时,千万别乱删除,别冲动,冲动是魔鬼
    • 对于问题的聚焦,还是缺少经验,正确的打开方式应该是:求同存异,对比然后对问题聚焦
    • 千万别尽早下结论,多想一想解决问题的方式是否全面,还有没有没有想到的,思路是否清晰。
    • 多问几个为什么,自己解决不了的为什么,可以找有经验的人,帮忙分析

    锻炼自己的解决问题的思路和方式,打开方式:

    • 遇到问题多问为什么,自己驱动问题解答,总结解答过程
    • 给技术社区解答问题,从简单的开始
      迈出第一步

    相关文章

      网友评论

          本文标题:解决问题的姿势很重要

          本文链接:https://www.haomeiwen.com/subject/sloeoxtx.html