# 如何定义前端线上问题
最近这几天有用户反馈页面打不开,页面按钮点击没有反应,但是去复现的时候,发现在自己的设备上都无法复现这个问题。
可以复现的问题,都不是啥大问题(虽然解决起来难度有大有小,但是总归是知道什么问题,可以解决)。没有办法复现的问题,就很尴尬了,可能跟用户行为有关系,也有可能是网络问题,设备兼容性,业务本身逻辑问题等。
有什么方法可以快速定位线上的 BUG 吗?
# 一、错误监控平台
想要知道线上有没有 BUG,你需要有一个统计错误的框架,否则只能等用户反馈给你们客服说页面有问题,然后给你们上报。
社区中常见的有 (sentry Arms) 等,sentry 可以搭建一个自己的私服,然后把错误上报到这个私服中。再加一个 邮件提醒有错误通知你。
# 二、定位错误的几种方法
# 2.1、可复现的错误
可以复现的 BUG,都相对比较容易解决。
打开页面即可复现(兼容性问题,用户数据问题)
【Easy】直接自己打开页面,看控制台报错,然后根据报错定位到代码,看报错原因在解决。
需要一定操作后,才可复现(业务逻辑问题)
这个就需要错误监控平台统计用户行为,知道用户做了哪些交互后,才出现的这个问题。这个也跟上面差不多,可以复现,就可以自己打开控制台看错误。
# 2.2、不可复现的错误
不可复现的 bug,是最大的坑。(我的手机可以呀,你为什么不行)
特定设备出现(可能是兼容性问题,低版本系统手机等)
兼容性问题最多,很多手机内的 webview 兼容型不是很好,页面错乱,某些新的语法不支持(也没有引入 polyfill)。这种需要找到真机来模拟一下。
公司内部测试不可能有市面上所有类型的手机,因此没有对应型号的真机来测试。 这个时候可以使用 云真机来进行测试,这里推荐腾讯的 《wetest》。百度也有一个 百度MTC-移动云测试中心
注意,这个云真机正常是付费的。
特定用户数据特定数据导致的 BUG
特定用户报错,因此需要知道这个用户是谁,sentry 错误统计的时候,最好带上用户的id,或者可以标识用户的字段。
通过用户标识,在后端接口请求日志中,找到用户的 cookie,直接写入本机的 cookie 中,这样就模拟了出错用户的登录。(这里说明 cookie 泄露,可以让别人用来做一些恶意操作)
千万注意,不要去做什么敏感操作哈。否则要是用户突然收到通知,说正在进行什么操作,那不是贼坑用户。
# 三、定位的错误的思路
- 用自己的设备打开页面,看是也有问题,有问题直接改,over
- 看 sentry 用户的交互行为,然后按照用户行为操作一遍,看是否能复现。
- 模拟用户登录,再走1,2步骤,看是否能复现
- 看用户设备信息,用云真机测试下,有问题再找兼容性问题,然后修改测试修改测试,fix上线。
- 上面否没能复现,也有可能是网络问题,APP版本问题,设备系统版本问题,CDN 资源请求问题。(这些只能一个一个去尝试了)
- 以上都不能,让用户换个手机,或者用手机流量再试试。
# 四、碎碎念
错误监控平台,是技术团队基建中很重要的一个环节。最好可以搭建一个,或者直接接入现成的服务。
这样出错了,你才有迹可循,快速定位到问题所在,而不用摸瞎。
至于要不要自己从零去搭建一个,这个就看自己团队的情况了。小团队,直接用开源的 sentry 就基本够了。