互联网产品上线之后,一般都会通过各种途径收到反馈的线上问题,而对线上问题的处理就成了重点问题。当然对于线上问题的处理有各种应对之策,这些各不相同的解决之法,对于公司来说亦有不同程度的资源需求,正因为如此就需要有一种最为有利的方案,能够快速并妥善的解决问题。
现实情况中,处理线上问题,只顾解决表面原因、而不管根本原因的解决之法成为一种普遍现象。 然而,选择这种急功近利的问题解决办法,治标不治本,问题免不了还要复发,其结果是不得不一而再、再而三的重复应对同一个问题。可以想象,这些解决重复问题的成本肯定是惊人的。
在这里比较推荐的是一种方法是RCA(Root Cause Analysis,根本原因分析),这是一种回溯性失误分析方法,不仅仅关注问题的表征,而且确定和分析问题原因,找出问题解决方法,并制定问题拦截和预防措施。RCA能够帮助QA人员发现线上问题的症结,并找出根本性的解决方案。
RCA的目标是找出:
问题(发生了什么)
原因(为什么发生)
措施(什么办法能够阻止问题再次发生)
所谓根本原因,就是导致我们所关注的问题发生的最基本的原因。因为引起问题的原因通常有很多,物理条件、人为因素、系统行为、或者流程因素等等,通过科学分析,有可能发现不止一个根源性原因。
RCA分析过程
在问题发生后,首先通过沟通和资料分析,尽可能得到完整的问题信息和数据。然后通过头脑风暴、鱼骨图法、因果法、5why等分析方法确定直接原因(问题发生时事物的状态、进行的操作)、根本原因(导致问题必然发生的最本质原因)、间接原因(导致问题发生的其他影响原因)。最后针对分析出来的各个原因制定对应的改进措施,并在措施实施后进行结果的核实和成果的推广。
RCA实施
QA人员进行线上问题的根本原因分析,主要是进行如下的调查和追溯:
1.缺陷在项目的哪个阶段被发现,缺陷的出发条件、外在表现和业务影响有哪些,这些是缺陷的背景信息,用于今后确定改进的优先级和设计用例。通常触发条件不明确的缺陷,不会进行根本原因分析。
2.缺陷的引入阶段和引入的直接原因,间接原因,根本原因,如何去避免引入这些缺陷?缺陷的引入原因可能是需求中缺乏相关信息、代码实现的疏忽、人员交接的遗漏等。通常缺陷都不是测试人员引入的,追问引入的原因,主要是找到要参与到问题改进的其他部门相关人员。
3.缺陷应该在哪个阶段发现,测试遗漏的直接原因、间接原因、根本原因,如何才能发现?只是QA进行RCA分析的核心,原因可能是需求分析错误、测试用例设计遗漏等。QA就是根据这些信息最终归纳出改进方案。
4.在分析原因、制定解决措施的时候,尽可能的追问到根本原因,并且针对各层原因确定相应的解决措施。在启动专项改进工作的时候,还需要根据技术难度、实施成本以及目标达成。确定究竟采取哪些措施,从哪一层着手拦截缺陷。
RCA分析中,测试遗漏的根本原因分析是最关键的环节。我们需要追问到真正的技术原因,而不是把“责任心”之类的人为原因作为根本原因,所以打破砂锅问到底,每个问题要多问几次,并逐层深入,直到找到根源。
示例
问题描述:在某个后台系统的“app用户意见反馈”报表中,出现多条重复的用户提交的反馈信息
总结
第一次追问why,得到直接原因,措施可以拦截这个缺陷,但同类缺陷无法拦截,治标不治本;
第二次追问why,得到间接原因,措施可以拦截这个缺陷,也可以拦截同类缺陷,但实施性欠佳;
第三次追问why,得到根本原因,措施可以拦截这类缺陷,改进彻底并可持续。
但是要注意进行RCA的工作量比较大,因此不可能对所有的线上问题进行分析,可先进行一遍粗略的筛选,选出价值比较大或典型的问题再进行RAC分析。