经验分享:程序员怎么快速定位问题(BUG)

小微 科技经验分享:程序员怎么快速定位问题(BUG)已关闭评论109字数 2188阅读模式
摘要让我掉下眼泪的 不止内存泄漏让我夜夜不眠的 不止你的需求明天还要改多久 你攥着我的手让我感到为难的 是善变的需求发布总是在半夜 回滚是永远的愁错误(Bug)随时的暴漏 困扰着我心头...

让我掉下眼泪的 不止内存泄露

让我夜夜不眠的 不止你的需求文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

明天还要改多久 你攥着我的手文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

让我感到难堪的 是善变的需求文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

发布老是在夜半 回滚是永久的愁文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

过错(Bug)随时的暴漏 困扰着我心头文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

作为程序员,以上这些场景你一定都阅历过。今天就来聊聊怎么快速定位问题。文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

先划重点,下文所写都是一家之言,本人工作经验不多,语言表达能力有限,文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

而app、H5、小程序这三端都呈现了商品会员价显示不正确这个问题,于是我判定,这大几率是一个后端的逻辑问题。三端都写错代码取错了会员价这个几率应当不大。文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

案例4:某用户购买的xx评测专栏的评测课没法打开。文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

这是一个产品反馈的线上问题,由测试大佬提到开发这边的时候,测试大佬当时其实不能复现。因为评测课的特殊性,它是需要由用户做题输入到系统,系统解析用户答题情况,然后做系统举荐。文章源自微观生活(93wg.com)微观生活-https://93wg.com/24514.html

这是一个典型的与用户行动数据有关的问题,可能只有拥有某些特性行动、数据的用户才会遇到。遇到这类问题,测试也是很难复现的。可以查一下日志,看看有无报错信息。

当时遇到这个问题的时候,因为项目接入了sentry平台,开发这边也是收到了系统异样报错的邮件提示,很快速的就找到了缘由。

定位接口

好,经由上面几轮的大致判断,这大几率就是一个后端Bug了。现在咱们需要做的就是,快速定位到出问题的具体接口。

举栗子

案例2:小程序商品会员价显示不正确。

由于app、H5、小程序三端使用的是同一个接口来获取商品相关信息,我会优先在H5平台调试,毕竟不用开Charles,利便嘛~~

遇到问题,快速响应以及解决才是重点,尤其的线上问题。所以有时候这个功能可能不是你开发的,那么怎么在这么多要求中怎么快速定位找个具体接口呢?这就要靠你的经验以及聪慧的大脑了。

这里就分享一个我的经验吧,不一定合适所有场景。就拿这个案例来讲:打开商品详情页,打开节制台。基于我对系统的总体了解,我确信一定会有一个接口返回商品的会员价,具体哪一个接口我也不知道。

好,这个时候如何办呢?猜接口!固然了,也不是乱猜。获取商品会员价,那这个接口大几率需要前端传给后端一个商品id,那商品id在哪里呢?商品id一般都会呈现在当前页面的URL里。于是,在节制台的filter框中输入商品id。这个时候已经可以过滤掉大部份的要求了。

接下来你要做的,还是猜!看看剩下这些要求地址名称,猜一下他的作用;看看接口返回的字段名称,有无名称像“会员价”字段,有无返回值以及前端显示的会员价同样的字段。最后,经由斗胆料想以后,咱们要做的就是谨慎求证,确认咱们定位的接口是不是正确。

定位代码

定位到接口以后,咱们就能够筹备看代码,修Bug啦!

不知道你有无遇到过这样的情况。打开代码,一眼望去,这个代码这么长,而且以前也不是我写的,我该如何办呢?下面咱们就来说一下怎么来快速定位Bug代码。

举栗子:

案例2:小程序商品会员价显示不正确。

经由咱们以前一顿猛如虎的操作,终于定位到了问题。

//接口返回数据{ \"price\":9900, \"discountPrice\":8900, \"vipPrice\":0,}

会员价显示不正确,也就是\"vipPrice\":0这个字段有问题。

打开代码,找到该接口对应Controller,找到该Controller返回的VO,找到VO中的vipPrice字段的setter办法,鼠标右键find Usages。恭喜你,这个时候你已经找到了这个vipPrice的值是在哪一行被设置的了,将重点聚焦于此便可,Bug就在这个代码左近了。看一下这个vipPrice的值是如何计算出来的,是否计算逻辑写错了。

如果这个时候,很不幸Controller的VO是通过BeanUtils这些工具类将属性映照过去的,那么你运行find Usages可能就找不到属性是在哪里被设置的了。唉,写代码时用的爽,出问题时泪汪汪。那只能查这个VO是在哪里被用到了,然后去代码里查了。

案例3:案例3:优惠券领取不了了,弹窗显示“领取失败,该优惠券仅限新人领取”!

如果“领取失败,该优惠券仅限新人领取”这个案牍,是你的接口返回给客户端的,那么,这个时候你要做的就是,IDEA全局查找这个关键词。

哈哈哈,恭喜你,快速定位了,在PayUserRuleChecker的第51行,是否很简单?

修复问题

既然已经定位到具体的代码了,那么就能够进行问题修复了。这个时候就要看个人经验啦,有经验的程序员可能一眼就能看出来问题。

这里罗列一些需要注意的点:

学集聚焦。整个service办法的逻辑代码可能不少,然而像”会员价显示不正确“这类问题,一定是之以及计算会员价相关,你只需要聚焦这一块的逻辑便可。

学会debug。有些情况下,即便发现了问题代码,却还是发现不了问题(比如说,报错日志说第xx行有问题,打开xx行一看,懵,这里如何可能会有问题呢)。这个时候,你应当尝试去debug代码,通过运行时debug,分析数据,来发现问题。

怎么防止

借用测试大佬的一句话:\"没bug是不可能的,这辈子都不可能没bug的\"。

而咱们要做的,一是要尽量的减少Bug,防止问题重复呈现;二是要遇到问题,快速修复。千万不要惧怕Bug,更不要耽心出Bug就不敢写代码。

简单总结

最后的最后,就来做个简单

以上就是微观生活(93wg.com)关于“经验分享:程序员怎么快速定位问题(BUG)”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/24514.html