ABA分析方法
“决定我们看到什么,并且看到什么方式的是我们的思维方式。” — 乔治·奥威尔
更多精彩内容,请关注公众号《机器灵魂注入师》。
什么是ABA分析方法?
可能你从很多地方听过这个名词,无论是在软件开发还是硬件领域(比较典型的领域:汽车、消费电子、医疗等行业),ABA验证都是一种快速分析故障的一个方法,第一次听到这个词,当时是不是一脸懵逼,本文就深度带你了解下ABA的分析方法。
简要概述就是:怀疑A模块导致系统故障,将B模块替换A模块,故障消失,再将A模块替换回来,故障复现,则说明A模块是导致系统故障的原因
细化ABA分析方法
针对不同的场景,ABA的策略有些许不同,下面逐一分析。值得说明的是,每一步都是下一步进行的基础,如果前一步的结果不符合预期,说明怀疑的方向出现问题,需要重新梳理问题的原因。
值得说明的是,一般ABA一般用在高概率复现故障的场景中,不然结论很难得出。同时ABA是用在现有的能力无法直接判断引发故障的根本原因时使用,对于能直接定位问题的,用ABA分析验证就是大费周章了。
1、怀疑系统中的模块A导致系统故障,且无模块A的情况下,系统仍能运行。
如下图所示,执行如下三个步骤:
- 从出现故障的系统中移除可疑模块(A),进行下一步。
- 检查故障是否消失,若消失,进行下一步。
- 将可疑模块A重新放入系统原位置,故障复现。
很多人可能疑惑为啥要增加第三步,这是为了保证你做第一步的时候,会不会误操作了别的模块,导致没有控制好变量。
这种思路一般应用在软件系统上,比如整个大系统最近有个异常(系统挂死、异常复位等),不知道其根本原因,可以从最近新加的模块入手,做这个ABA验证,看看是哪个模块导致的,缩小范围,继续分析。
2、怀疑系统中的模块A导致系统故障,需要用相同功能的模块B替换,系统才能正常工作。
如下图所示,执行如下三个步骤:
- 从出现故障的系统中移除可疑模块(A),进行下一步。
- 用验证过正常的B模块去替换A,检查故障是否消失,若消失,进行下一步。。
- 将可疑模块A替换模块B,即恢复原状,故障复现。
增加第三步,同样是为了保证你做第一步的时候,会不会误操作了别的模块,导致没有控制好变量。
这种思路在软硬件方面都有使用,比如
- 硬件:怀疑某个硬件不良或者损坏。
- 软件:某个版本的驱动是否存在问题等。
3、怀疑系统中的模块A导致系统故障,需要用相同功能的模块B替换,系统才能正常工作,同时,你还有另外一套运行良好的系统。
如下图所示,执行如下三个步骤:
- 从有故障的系统1中移除可疑模块(A),从无故障的系统2中,移除模块B,进行下一步。
- 模块A放入系统2,出现故障,模块B放入系统1,故障消失,进行下一步。。
- 模块A和B重新互换,即恢复原状,系统1故障复现,系统2故障消失。
这是第二种场景的升级,一般用在硬件排查上,极具说服力。
总结
其实,ABA分析问题,可能很多人在工作中都或多或少用过这个方法,只是没有这个概念,说明白了就是控制变量和对比验证,没什么高大上的东西。
这里之所以那么详细的去阐述,其实是想说的是,我们工作中要有意识地积累一些分析问题的套路,或者说是思维框架,这样再遇到类似场景时,可以快速地去提出有效的排查手段,不至于手忙脚乱