什么是程序员亲手制造的,你却找不到

博主:爱码叔
个人博客站点: www.icodebook.com
公众号:爱码叔漫画软件设计(搜:爱码叔)
微博:程序员涛哥
专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上,欢迎大家关注访问!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最难解决的Bug是什么?

“呦,又加班写Bug呢?” 看似程序员间的调侃,却是非常的现实。代码写的越多,Bug自然也越多,所以没必要惧怕写出Bug,但太基础的Bug是要尽量避免的,毕竟技术是程序员的脸面,别被打的太疼。

根据我十多年的程序员经验,逻辑问题都好查找和解决。最难问题是不能稳定复现的问题,也就是俗称的“灵异Bug”。有的时候分人、有的时候分电脑、有的时候分时间,总之就是让你摸不清头绪,不知道什么时候就冒出来。

这种Bug一定要解决吗?我可以很负责任的告诉你,这种问题上线前一定要解决。千万不要当做偶然事件,觉得线上没问题。只要测试环境出现过,生产大概率会出现。如果不想熬夜解决线上问题,被扣奖金,那么一定要把这种bug扼杀在上线前。

“灵异 Bug”的解决思路

我把“灵异Bug”分为两大类。

一、找不到复现逻辑的 Bug

第一类的前提是环境无关,单纯找不到复现条件。这种问题一般出现于业务逻辑比较复杂,链条又很长的业务中。
由于操作的组合千变万化,不知道什么样的组合就中了大奖。这种情况我们首先应尽量回忆出问题的操作有何不同,然后从可疑点入手,进行重试、分析。
如果回忆不起来,或者可疑点通过了验证,事情就变得难办起来。我们也只能冷静下来、抽丝剥茧的进一步分析。如果时间还比较充裕,我们可以尽量多的加入 log,期待下次出现问题时拿到更多的数据帮助我们找到问题。

二、无关业务逻辑的 Bug

第二大类是在不同环境、客户端、用户的情况下,无法稳定复现。我们要分析的是复现和不能复现间的差异,下面我列举了一些。

  1. 数据差异。输入数据是一样的,但计算过程中用到的数据可能是不同的。
  2. 机器差异。测试和生产环境的机器是否完全一样。例如操作系统、权限等等。
  3. server上安装的类库差异。所以依赖的类库版本是否一致。
  4. 代码差异。部署的服务代码版本是否一致?所依赖的其他系统版本是否一致。
  5. 服务器网络环境差异。防火墙策略,网络连通性。
  6. 中间件差异。中间件的大小版本、安装时选择的参数是否一致。例如数据库的版本和编码方式。
  7. 时区差异。国际化的系统,复现时选择的时区是否和出问题地区一致?环境间的时区设置是否一致。
  8. 用户权限差异。复现的用户角色和拥有的权限是否和Bug描述中完全一致。
  9. 并发的差异。测试环境一般没有并发,有些问题在并发时才会出现。
  10. 客户端的差异。客户端使用的浏览器会造成很多兼容性的问题。
  11. 网速差异。有些Bug在弱网环境下才会出现

如果你经验很丰富,那么上面这些情况已经在你的脑子里了。当你看到问题,你会关联到上述原因中的某几类。然后逐步去摸清是否存在差异,如果存在差异,那么调整为一致,再去复现。直到你能稳定复现。

其实很多时候,当你能稳定复现时,解决问题的方法也有了。例如防火墙问题,那么调整规则就可以了。

这也是这类问题的特点:找起来很费时间,但改起来反而比较容易。

以上我列举的问题原因肯定是不全面的,大家有好的经验欢迎留言补充。最后住大家码到成功,永远没Bug!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值