admin 管理员组

文章数量: 887006

先讲个线上事故的小故事。

目前为止碰到的最大的线上Bug就是,发给代理商的结算资金,数据计算重复,多算了几十万的问题。

好在业务方在后台及时发现,且代理商未进行提现,没有造成任何损失。

刚开始看到这个Bug,简直惊呆了,这个结算功能是已经上线一年多的功能啊!怎么会突然出现Bug???

后来开发同学排查才发现,近期上线了一个跟代理商结算相关的需求,平台B动了结算的接口字段,但是没通知我们平台A,导致接口字段错用,重复计算。

我们的平台为A,提供计算数据接口的平台为B,平台B会提供API供平台A调用,具体逻辑:

1、平台B跑定时任务,向平台A发送通知,附带ID作为参数

2、平台A调用平台B提供的接口,获取对应的数据,并存入数据库中

3、平台B的数据会做分页处理,平台A需根据记录数量多次调用接口获取数据,有两个字段:总数量totalCount和总页数totalPage,比如有120条数据,每页100条数据,平台A就会调用2次接口

4、平台B的接口改动后,提供的接口不包含字段totalPage但包含totalCount,且未通知平台A

5、平台A误将totalCount代替了totalPage字段,且平台A未做幂等处理,即未检查相同月份相同代理商的情况,比如有120条数据,每页100条数据,平台A理论上只需调2次接口,却调了120次接口,导致同一代理商同一月份的结算数据被重复算了一百多次。

事故过程以及处理方案:

1、业务方反馈,后台结算页面,相同月份相同代理商的结算数据被重复计算了,导致总计金额多出几十万

2、开发,测试和产品(兼职项目管理负责人)迅速响应,立刻通知运维同学停服

3、从后台观察,本月还未出现代理商提现的记录,即暂未造成任何影响

4、测试同学协助开发同学重现,查log,找到了原因

5、开发同学修复,测试同学进行验证,并进行相关模块的回归测试

6、上线,并对线上数据进行清理

7、复盘。开发同学写事故调查报告,包括:事故现象,事故影响,逻辑说明,事故原因,建议和意见

8、追责。最后追责下来,是接口提供方的问题,好在没有造成损失

对于测试同学来说,项目线上出现Bug,应该都遇到过~

而且,项目组成员的第一反应肯定是:测试同学怎么在测试环境没发现这个问题呢?

在没查清楚原因前,就会莫名的背锅。

问题来了,项目线上出现Bug怎么办?

一个原则:先救火,再追责。

对于测试同学来说,分以下三部曲来跟进:

一、评估Bug的严重程度以及影响范围

评估是否为核心功能的Bug,是否影响大批量的用户。

比较严重的Bug,例如购物网站无法下单,砍价等活动类项目无法分享,结算金额错误等等。

一般的Bug,例如页面兼容性问题,文案显示等问题。

二、确定修复方案:停服?回滚?线上修复?

如果是比较严重的Bug且影响范围比较大的,例如购物网站无法下单,一般采取的方式是回滚,先降低损失。

如果为一般的Bug,例如页面兼容问题等,开发同学顺手改改的事情,就可以立马改完验证后上线。

三、追责

分析Bug出现的原因,一般有以下4种:

1、测试用例未覆盖到

2、原型文档上未说明

3、测试环境无法模拟

4、其他平台修改接口未通知

如果是2,3,4的原因,那么应该说明原因,并反馈给相关负责人,及时规范流程,后续尽量避免。

如果是1的原因,主动承担责任,补充用例库,及时总结,后续避免犯同样的错误。

本文标签: 线上 项目 bug