# 如何定义前端线上问题

最近这几天有用户反馈页面打不开,页面按钮点击没有反应,但是去复现的时候,发现在自己的设备上都无法复现这个问题。

可以复现的问题,都不是啥大问题(虽然解决起来难度有大有小,但是总归是知道什么问题,可以解决)。没有办法复现的问题,就很尴尬了,可能跟用户行为有关系,也有可能是网络问题,设备兼容性,业务本身逻辑问题等。

有什么方法可以快速定位线上的 BUG 吗?

# 一、错误监控平台

想要知道线上有没有 BUG,你需要有一个统计错误的框架,否则只能等用户反馈给你们客服说页面有问题,然后给你们上报。

社区中常见的有 (sentry Arms) 等,sentry 可以搭建一个自己的私服,然后把错误上报到这个私服中。再加一个 邮件提醒有错误通知你。

# 二、定位错误的几种方法

# 2.1、可复现的错误

可以复现的 BUG,都相对比较容易解决。

  1. 打开页面即可复现(兼容性问题,用户数据问题)

    【Easy】直接自己打开页面,看控制台报错,然后根据报错定位到代码,看报错原因在解决。

  2. 需要一定操作后,才可复现(业务逻辑问题)

    这个就需要错误监控平台统计用户行为,知道用户做了哪些交互后,才出现的这个问题。这个也跟上面差不多,可以复现,就可以自己打开控制台看错误。

# 2.2、不可复现的错误

不可复现的 bug,是最大的坑。(我的手机可以呀,你为什么不行)

  1. 特定设备出现(可能是兼容性问题,低版本系统手机等)

    兼容性问题最多,很多手机内的 webview 兼容型不是很好,页面错乱,某些新的语法不支持(也没有引入 polyfill)。这种需要找到真机来模拟一下

    公司内部测试不可能有市面上所有类型的手机,因此没有对应型号的真机来测试。 这个时候可以使用 云真机来进行测试,这里推荐腾讯的 《wetest》。百度也有一个 百度MTC-移动云测试中心

    注意,这个云真机正常是付费的。

  2. 特定用户数据特定数据导致的 BUG

    特定用户报错,因此需要知道这个用户是谁,sentry 错误统计的时候,最好带上用户的id,或者可以标识用户的字段。

    通过用户标识,在后端接口请求日志中,找到用户的 cookie,直接写入本机的 cookie 中,这样就模拟了出错用户的登录。(这里说明 cookie 泄露,可以让别人用来做一些恶意操作)

    千万注意,不要去做什么敏感操作哈。否则要是用户突然收到通知,说正在进行什么操作,那不是贼坑用户。

# 三、定位的错误的思路

  1. 用自己的设备打开页面,看是也有问题,有问题直接改,over
  2. 看 sentry 用户的交互行为,然后按照用户行为操作一遍,看是否能复现。
  3. 模拟用户登录,再走1,2步骤,看是否能复现
  4. 看用户设备信息,用云真机测试下,有问题再找兼容性问题,然后修改测试修改测试,fix上线。
  5. 上面否没能复现,也有可能是网络问题,APP版本问题,设备系统版本问题,CDN 资源请求问题。(这些只能一个一个去尝试了)
  6. 以上都不能,让用户换个手机,或者用手机流量再试试。

# 四、碎碎念

错误监控平台,是技术团队基建中很重要的一个环节。最好可以搭建一个,或者直接接入现成的服务。

这样出错了,你才有迹可循,快速定位到问题所在,而不用摸瞎。

至于要不要自己从零去搭建一个,这个就看自己团队的情况了。小团队,直接用开源的 sentry 就基本够了。

# 参考文章

  1. 一步一步搭建前端监控系统:如何定位前端线上问题?
  2. 全景还原报错现场 | 应用实时监控 ARMS 上线用户行为回溯功能
Last Updated: 2/17/2020, 6:39:09 PM