线上BUG 处理并分析原因

昨天下午大神把组内几十号人召集在一起开Online bug分析大会,主要是针对近期线上事故从事故原因和解决方案两个维度来分析

对金融软件来说,每一次的线上事故都有可能给公司带来重大的损失,少扣了用户的钱,为公司带来资金方面的亏损;多扣了用户的钱,则为带来不必要的合约或法律纠纷,故测试金融软件不比其他行业的软件,后者线上bug大多不会直接引起资金方面损失,最多就是用户体验不好,功能没有实现,导致用户量的流失。

对金融软件来说没有小bug,一旦出现bug那就是重大的bug,必须引起高度重视。

俗话说”人非圣贤,孰能无过“,软件是由人编写的,所以再所难免都会有问题,而我们所要做就是尽量避免出现问题,或者是避免出现重复的问题。

对于软件测试人员来说分析线上BUG是非常好的一个措施,这样可以检测到测试人员在测试过程中哪些地方考虑不周,或没有考虑到,从而可以提醒测试人员下次思考的范围扩大,尽可能地完全覆盖测试范围。

从分析结果的角度出发,线上bug大多都是开发人员和测试人员麻痹大意所导致的,并不是不可避免的。 

经过分析得出线上的bug出现的原因基本有以下几类:

1.开发人员使用java框架错误

2.开发人员上线时合并代码不仔细,导致代码有遗漏

3.测试人员回归测试流程不全

4.多系统一起上线,缺少联调或者联调不全

  

01 开发人员使用java框架错误

这个问题已经出现了两次,在8月份就出现过一次,原因就是开发人在使用多线程时,将多例使用成单例,导致系统在高并发进出现了串数据的现象,导致系统在处理时放错款,将A的钱放到B的账户中去了。

虽然使用单例能节省资源,降低系统的占用率,但这种情况并不合适目前的系统。

而此中情况在测试过程中并不一定能测试出来,这种出现的机率不定,必须在数据高并发时才有可能出现。

解决方案:技术问题,将单例修改成多例。

 

02 开发人员上线时合并代码有遗漏

开发人员上线时删除了master中的某行代码,引起有个变量没有定义,导致上线之后某功能失效。

开发人员将git分支上的代码合并到master时,master提示某一行代码没有,开发人员就将分支上的代码删除再合并到master,等将代码上线之后,导致某个功能失效。

解决方案1:开发人员将代码合并到master时,先将master上的代码拉到一个新分支上,然后再将要合并的代码合到新分支上,最终将新分支上的代码合并到master上。

解决方案2:开发人员建立良好的习惯,在开发某个项目时,每天(固定频率)都将master上的代码合并到自己代码的分支上

 

03 测试人员回归测试不全==漏测

说是回归测试不全,其实就是相当于一定程度上的漏测,漏测应该是软件测试人员尽量避免,一般漏测是因为测试人员思考不全,导致某个方面没有测试到。

这次线上bug分析有以下几个问题:

回归测试时,验证某个流程,但只验证到任务创建,就没有执行任务,上线后,该任务创建后执行会报错。

未测试幂等性,上线后,导致两次返回的结果不一样。

开发修改某一个bug,回归测试未回归以前的流程,导致上线后,原来正常的流程执行不通过。

解决方案:

1.回归测试时,主流程必须回归,并且有完整的回归步骤。

2.一个业务流程测试必须跑完一个完整流程。

3.测试过程中一定要细致,不能遗漏重要的点。

  

软件中的bug不可能完全测试出来,但最不应该出现的就是原本是正确的流程或功能,经过版本改动,在后期又出现,但测试人员再次测试时竟然没有发现,像这种情况是软件测试人员最应该避免的,所以回归测试很重要,不仅要回归主要流程,还需要回归修改bug相关的代码部分。

解决回归测试流程测试不全最好的解决方案就是引入自动化,就目前我们的系统不够成熟,改动太多,业务流程或需求都不稳定,所以自动化测试还未正式引入。

 

04 多系统一起上线,缺少联调或联调不全

因为联调出现问题也不再是一次二次了,为什么联调会出现问题呢?

公司业务是由有多个系统组成的,同时还需要调用其他公司业务接口,测试人员在测试时调用相关系统接口时模拟返回或回调,基本都是使用的mock,mock返回的值并不是真的从相应系统的返回值,所以如果联调测试时没有把握好,就非常容易出现问题。

 

在测试过程中联调就非常重要,但由于联调测试人员的放松,对联调内容的遗漏,导致业务上线之后:

1.调用某查询任务,对方会一直返回处理中,导致流程卡住。

2.A系统回调B系统失败,原因是编码方式不一样。

3.某系统功能失败后,调用查询接口报错。

4.调用某系统,应返回code=1,结果返回code=0,导致业务处理错误。

以上问题都是由于系统之间的调用或回调导致的线上bug。

 

解决方案:

1.在联调之前先将自己系统中本次项目所有用例测试完全。

2.编写联调用例,并且与多方测试人员沟通,确保联调用例能全面覆盖业务流程和任务。

3.在联调时,确保所有业务流程是全部走通,且返回的值正确。

 

联调测试与平时的功能测试重点和关注点都不同:

1.联调测试保证业务流程是通的。

2.联调测试时要检查其他系统返回来的数据是否正确?检查相同数据在各个系统存的值是否相同?

3.检查推送的报文mapping与其他系统接口文档中的mapping是否一致(映射)。

 

此次线上BUG分析再次验证程序中的bug就是人为的,避免这些情况就需要开发人员在开发过程中多注意,培养良好的编程习惯,而测试人员在测试过程中需要将测试范围考虑完全,尽量避免遗漏测试点,对于不清楚的点,不管是开发还是测试人员,都应该拿出来讨论,切忌闭门造车,不懂装懂。

 

了解更多测试知识访问如下链接:

https://edu.csdn.net/course/detail/22948

https://edu.csdn.net/lecturer/3215

https://edu.csdn.net/course/detail/30898

https://edu.csdn.net/course/detail/25768

 

 

 

 

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
运维工程师在线上bug应急处理中扮演着至关重要的角色。在线上系统出现bug时,运维工程师需要迅速反应,以最快的速度解决问题,确保系统能够正常运行。 首先,运维工程师需要仔细分析bug的出现原因。他们会通过查看系统的日志记录、监控数据、错误报告等途径,定位问题的具体位置。通过分析和理解问题,他们能够更快地找到解决方法,并防止类似的问题再次发生。 其次,运维工程师会与开发团队密切合作,确保及时修复bug。他们会与开发人员沟通,了解问题的背景和相关的代码。运维工程师可以提供相关的信息和日志给开发人员,以帮助他们更快地定位和修复问题。通过协作,问题可以更快地得到解决,系统能够尽快恢复正常。 另外,在处理bug的过程中,运维工程师需要制定一个良好的紧急响应计划。这包括识别和区分不同严重程度的bug,并根据严重程度的不同制定相应的解决方案。对于严重影响系统正常运行的bug,运维工程师会立即采取措施解决问题;而对于一些较小的bug,他们可以通过临时修复或暂时性的解决方案来减轻影响,然后再进行深入的分析和修复。 最后,在解决bug后,运维工程师会进行事后分析和总结,以避免类似问题再次发生。通过回顾和总结,运维工程师可以找到导致bug的根本原因,并提出改善措施,从而提升系统的稳定性和可靠性。 综上所述,运维工程师在线上bug应急处理中起着关键作用。他们需要快速反应、仔细分析、与开发团队协作、制定紧急响应计划,并进行事后总结。他们的工作对于保障系统稳定运行至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传说三哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值