找到根因,才能从根本上解决问题

简介: 源自我参与的一个项目在用户那里出了bug,当然非我的改动引发,是之前处理数据未考虑到异常。

题记

源自我参与的一个项目在用户那里出了bug,当然非我的改动引发,是之前处理数据未考虑到异常。

一、Bug描述

image.png

公式即:优化数据=出口1flow1-出口2flow2,优化比例=优化数据/出口1flow1。

正如上表黄色标注所示,bug表象是优化数据为负值,优化比例为负值。用户一看还了得,还不如不去优化?

二、Bug临时补救方案

分析发现,不是所有应用识别都会出错,只有极其个别的情况。并且这种逻辑,近几年就跑出一回。所以,我们的方案是,当出口2flow2>出口1flow1的时候,就置出口2flow2 =出口1flow1。这样就绝对不会出现优化数和优化比例为负数的情况。

image.png

三、Bug补救后仍存在隐患

隐患1:

所有上面的出口1、出口2的数据是从mysql数据库中读取的,包含合计数据。合计和应用1-9共用一套逻辑,所以导致纠错时,如果出现出口2比出口1大的情况,置出口2=出口1的数据。这样就会出现出口2列的应用1-应用9的求和与出口2合计不等的隐患。

补救隐患1:

只有出口2列对应的合计行出错,真正的和应该等于应用1+…+应用9。想到的方案是不是从数据库中读取,而是进行应用1到应用9的求和

补救隐患1后的隐患:

我们保证了不出现异常数据,保证求和正确,用户看着没有问题,但作为工程师,就要扒一扒为什么会出现上面的异常数据

四、找到根因

讨论分析发现,是我们的应用识别驱动问题出了问题,导致讲大量出口1的数据识别为出口2的数据。即是下图的分类识别数据出了错。

 image.png

五、总结

很小很小的bug,但是带来很大很大的灾难性不可饶恕的问题,这种我们自身验证和测试是几年也跑不出这种异常数据的。但是,我们对异常的把控是做的远远不够的,其实除了常用的除数为0的情况,对于这种优化数据良不能为负数的情况也必须敲响警钟!

程序设计中要做出异常处理机制,或者跑出异常、或者打印错误日志,或者其他方法,但是一定要去做,要去处理,异常的场景考虑的越全面越好,异常的处理机制对应的越多越好。

谨记!

----  

 

作者:铭毅天下

转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/39449391

相关文章
|
8月前
|
SQL 前端开发 Java
分析解决问题的经验
分析解决问题的经验
|
测试技术 数据库
以目标为导向思考解决问题的方式
以目标为导向思考解决问题的方式
893 0
以目标为导向思考解决问题的方式
|
数据采集 人工智能 数据管理
开始数据治理时三个常见的陷阱和解决方法
当我们与客户合作帮助他们提高数据管理能力时,大多数部门都同意更好的数据治理将有助于解决他们的数据问题。
开始数据治理时三个常见的陷阱和解决方法
|
数据管理 项目管理
谈谈实施数据治理时常犯的10大错误
我所见过的最大的错误就是企业没有将文化变革纳为数据治理举措的一部分。到目前为止,这个错误是最大和最常见的错误,它最终可能导致数据治理计划的彻底失败。
|
关系型数据库 MySQL 程序员
教你如何成为解决问题的高手
最近看到很多初级或者准备入坑的小伙伴在问答模块提问问题 ,有的在 QQ 群或者微信群提问题,这个是很多新手程序员都会经历的一个过程,这种事情很正常,主要是自己都不清楚问题是什么或者描述不清楚,别人如何帮你解答呢?
72 0
|
SQL 存储 NoSQL
系统的性能瓶颈,排查该从哪些方面入手,如何定位?
系统的性能瓶颈,排查该从哪些方面入手,如何定位?
系统的性能瓶颈,排查该从哪些方面入手,如何定位?
|
中间件
「技术人生」第3篇:解决问题的规律总结
本文将介绍问题研究背景及解决问题的一般规律和特殊规律及二者之间的辩证关系。
2344 0
「技术人生」第3篇:解决问题的规律总结
|
测试技术 调度
避开这2个误区,测试目标 KPI 不再难设
阿里妹导读:好的开始是成功的一半!工作中,目标的设置是最不能马虎的事情。今天,我们请来孙阳(阿里巴巴测试开发专家),他从11年入职至今已有8年。在测试技术目标的KPI设置上,他有一些想法要与你分享。
1757 0
做决策、做决定、解决问题的逻辑
我们常犯的错误,便是将“经常问题”视为一连串的“偶发问题”。换言之,没有了解问题症结所在的基础,其结果自然是失败与无效。
2070 0