简单线上bug以及处理流程
一个bug背景
在周三快下班的时候,临时接到需求,需要修改协议书模板,后端只需要修改脚本即可。由于周四是版本
上线的最后一天,所以建议不要修改,原因如下:
- 每次发版当天的环境会很差,各个关联方环境极其不稳定;
- 本身有很多需求都没全部覆盖测试;
- 改完之后都需要走回归测试,测试同事有时间么;
但是组长觉得小小需求,测试负责人也说支持。最后妥协,修改了,当天就搞定了。周四开始回归测试,测试
同事测试出一个bug了,为说明此bug产生的缘由,说明一些简称:
1.客户级别L:(0:低;1:高);
2.数据源:
-
客户OCR扫描完证件信息(A)
-
本地数据库(B)
-
客户预留信息(C)
-
关系方的信息(D)
3.渠道:A 和 B需求做一个比对,判断是否同一个人,此需求是小灰同事负责开发(同事之间需要和谐相处说,随意取名小
灰。 ),在此将简单写成伪代码,如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31res = false
// 块1
if A then
if A == B then
res = true
else
res = false
END
END
// 块2
if L == 0 then
// 块2.1
if D 存在 then
if A == D then
res = true
else
res = false
END
else
res = true
END
// 块2.2
else
if A == C then
res = true
else
res = false
END
END
return res周四测试同事发现低级别的客户,OCR扫的与本地库不同,居然也认为是本人,所以将bug给小灰和我。当
时我看着日志,把数据对比的数据拿出来,写单元测试,发现确实如此。然后就叫小灰过来,给他讲了一下,
发现的问题,A渠道来的在块1比较是不同的人,客户又是低级的而D数据不存,覆盖了之前校验的值,将其
变为是本人了。后面他说:“不是很明白,回桌上自己想想”。最后他说改完了,移交测试了。由于我负责其
他的需求开发,负责查日志,忙着就忘记去看小灰怎么改的。后面就上线了,由于小灰需要支持版本发布,
周五调休。
另一个bug背景
周五一上班,大概10点多,收到很多邮件,一会查这个一会查另外一个。当天看到6笔报不是本人的异常,
赶紧查日志。拉取最新的代码,查完分析代码。小灰修改后的代码,改写伪代码如下:
1 | res = false |
分析出来是,B渠道,低级别客户,在数据D不存在的情况下,一直是非本人。所以与测试沟通造相关的数
据,复现生成问题。
bug修复处理
最后跟领导申请紧急版本处理修复,由于是由一个bug引起bug,问了如下三个问题:
- 修改的代码是否有review
- 测试同事是否有案例review
- 是否负责人报备
我的回答都是否定的,当时发现第一个bug的时候,我跟测试负责人打了招呼,但是没有跟组长说,后面也没
有review小灰修改的代码。处理此事我司步骤如下:
- 发邮件申请紧急版本给部门长;
- 开发直属领导与部门长说明bug问题;
- 修复bug
- 测试回归
- 发布版本
- 生成验证
修改小灰的代码如下:
1 | res = false |
然后与组长一起review代码,影响业务比较大,所以需要快速解决,没有重构代码。好了之后,画好流程
图,给测试同事讲解,再告诉测试同事在测试环境造什么样的数据,让其一个分支一个分支的测试。上线之
后,自己又找人生产验证。
总结
问责的时候,心里面确实不舒服,不是我的错,为啥要我承担。 后面想想,自己也有责任,发现了bug,
没有和小灰一同修复。今天就把此两个bug回顾,总结如下:
- 复杂的业务逻辑画好流程图,与测试同事一同案例评审;
- 开发单元测试一定做足;
- 不要逃避责任。
Author: cloudfeng
Link: https://cloudfeng.github.io/2018/06/23/arts/tip/T-onlineproblem/
License: 知识共享署名-非商业性使用 4.0 国际许可协议