美文网首页
定位bug方法及案例分享

定位bug方法及案例分享

作者: Mikasa___ | 来源:发表于2020-04-13 14:16 被阅读0次

Bug定位思路

  • 用户操作外部环境条件
    网络设了代理、弱网(如js/css未加载完全、请求超时)浏览器不支持、系统版本不支持、数据库被删除、测试环境脏数据、项目配置开关、测试环境切了分支等
  • 界面UI
    css样式问题 js交互问题 html文本问题
  • 中间环节
    缓存服务器(如redis)消息中间件(如rabbitMQ)、数据存取中间件(如七牛*)
    表单上传本地图片到七牛,提交表单后查看详情 七牛处理后给的图片链接带图片名称,如图片名称有中文会编码格式冲突导致图片加载失败
  • 后端服务
    如nginx配置、tomcat版本不同、jar包版本测试环境和正式环境不同
  • 数据库
    如测试环境和正式环境数据库版本不同、前后端数据格式*、长度限制不同

定位方式及案例

  1. 常见的可根据具体操作路径、查埋点、查后台配置、查数据库落库数据等来定位用户操作失误、项目配置不对等
  2. 抓包(fiddler、Charles、wireshark等,web端可开启F12调试*)
  • 看前端请求参数、content-type、token、格式等
    如NPS


    image.png
  • 看返回状态码
    400 bad request 参数有误、语义有误; 401 unauthorized 需用户信息验证;403 forbidden 服务器拒绝访问;404 not found资源未找到;405 method not allowed,如put delete
    500 服务器无法处理,一般服务端内部错误 如源码错误
    501 not implemented 服务端不支持请求的功能,无法识别请求方法
    502 bad gateway 网关或代理从上游收到无效相应
    503 service unvailable 服务临时维护或过载当前无法处理请求,
    504 gateway timeout 网关或代理从上游未及时收到相应
    505 http版本不支持


    image.png
  • 返回内容体
    排查接口返回数据的时候出错了,还是数据库中的数据就错了,还是缓存中的数据错了(如果用到了缓存的话)
    1)如返回数据只有错误码,没有reason或者没有明确的错误原因时,还可以根据请求接口调用哪个方法,去方法里面查错误码代表什么意思。方法里包含对哪个数据库表的什么操作,拿对应的条件去数据库里面查,数据库里的数据是否存错了
    或是被修改了或是脏数据或是数据迁移后出的问题
    2)数据返回精度的问题,如金额方面四舍五入还是直接截断,前后端对各部分的数据组成处理方式是否一致,后端的数据计算逻辑,数据库和金额相关的字段的存储数据是否正确,前端直接拿后端返回的数据还是前端自己计算的
    3)接口返回正常,客户端展示没更新,则考虑前端刷新机制是否有问题
    抓包请求和返回内容可以结合接口文档来看,是否按约定格式请求和返回,各字段数字表示的含义,有些返回状态码会根据业务对其进行二次包装
    服务端因用户认证服务升级后没做处理存入es字段错误.png
  1. 看日志
    1)服务端日志
    命令行ssh/xshell工具登录到服务器,找到相应log日志所在的目录实时查看日志 tail -f xx.log 或 cat xx.log |grep '关键词' 如找到报错信息可以去代码里面查是哪块报错


    image.png

    ps:分享一个我建表时设置了一列not null 没设置默认值
    在 insert into表其他列赋值了这一列没赋值,报错了 Field 'name' doesn't have a default value
    解决方法就是加一个DEFAULT ''
    此外建表时id也注意加AUTO_INCREMENT
    2)客户端
    <1> crash 以android端设备为例,一般,我们使用adb命令,输入adb logcat>log.txt会抓到系统的log。
    搜索Fatal,Exception等关键字,找到报错的log的堆栈,给到开发。开发根据堆栈可以看到是具体的哪行代码报出来的错误。
    <2>ANR 执行adb pull /data/anr/anr_2019-08-30-14-24-52-903 <本地目录>,需要注意的是,取/data/anr/目录下的文件,是需要root权限的
    7.0及以上设备 adb bugreport bugreport.zip 从生产的bugreport中,搜索ANR关键字
    <3>ios端 连接手机打开xcode,从菜单栏上选择 【Window】 菜单, 然后选择【 Devices】 .在窗口上, 选中对应的设备后,点击 【View Device logs】 按钮
    或使用 itools:高级功能-》崩溃日志

另外可以排查上一版本是否有该问题出现。方便开发定位是遗留下来的问题还是更新代码合入引进来的新问题

相关文章

网友评论

      本文标题:定位bug方法及案例分享

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