血泪的线上bug,有关Object.fromEntries

因为这个线上bug引发的反思:

1,兼容性测试的重要性

2,代码review的重要性

3,技术敏感的重要性

还有很多……

因为出现线上bug,这个链路上每个人都有责任和需要学习的地方,

而作为测试的话,更需要提高警惕,并不断学习提升自己的水平

bug背景:

本来这个需求应该是要排我这边的,但是由于需求挤压,就由另外一个同事负责跟进,上线之前让我简单协助验证了部分功能

上线之后,第二天发现,某个场景流量降低,然后对照时间,发现跟这个需求的上线时间几乎吻合

立马回滚线上包,观测半小时,数据逐渐恢复,由此定位到确定是这个需求上线有问题

需求定位到了,好了,开发去check代码逻辑有没有漏洞,测试去打开电脑尝试复现

本地复现不了,开发check完代码猜测是某个方法低版本不兼容导致的

根据数据的表现来看,并不是断崖式下降,是部分下降,肯定是某些场景有问题,

好以上两点,符合猜测

然后我们里面下载了一个低版本,访问了下有问题页面,果然,凉凉,复现了

Uncaught TypeError: Object.fromEntries is not a function

然后点开详细一看,果然

 

 然后去查Object.fromEntries的兼容性,果然

 

 复现的低版本浏览器的google内核是69,没到72.。。

 

以上就是一个普通的,很幸运的快速能定位问题的线上bug

那么,作为测试,要问自己,为什么没有在测试的时候发现问题?或者缺少了某种敏感性?

我问自己,换做是我,会不会也会发现不了?我思考了很久,也许概率也很大

首先,能够每次都做兼容性测试的话,会覆盖的更广一些,一定概率避免这种兼容性问题,但是并不完全

再者,虽然尽量每个提测都进行codereview,但是这真的是需要保持技术的敏感,看到换了一种方法解析参数,为啥要换这个方法?这种方法会不会有兼容性问题?

多问两个问题,以后会不会能少踩这种坑?……

然后再说线上兼容,巧了,我做过UI兼容,也恰好有这个页面,也有报警 报出来,然后并没有惊醒我,为什么呢

UI自动的化本身误报很多,由于元素的变化,时间等待的原因等等的很多很多误报,导致我有点习以为常,但是我看到这个报警了确实去看了,因为跟平常的误报不一样,特别打开看了一下

然后还发现本地没问题,当时有点怀疑人生,因为第一反应是觉得线上有问题的,因为这个报错确实不常见,然后还让其它同事看了下,她那里也正常

然后巧了,今天我非常忙,忙到看到报警很烦,然后又复现不了,更烦躁了,然后就从源头消息免打扰了一下,。。。

我觉得,这是我最应该反省的地方,对线上报警不敏感,是大忌。

最后我觉得,自己需要做个复盘,努力提高自己的测试水平和技术水平,最起码以后不再犯同样的错误

posted @ 2023-03-16 21:38  小眼睛大生活  阅读(484)  评论(0)    收藏  举报