



故障复现是故障排查的核心(特别是随机发生的故障),找到故障的触发方式就找到了钥匙。
试验的倾向包含对故障结论的预测。预测意味着感性认识、灵感、经验的结合,这是最初的试验倾向和路径,会随着对故障认识的深入而调整。
在本节中,首先介绍排查故障的试验工作是如何开展的,然后指出试验报告的常见误区,使用一个反面案例说明该误区,最后以一份测试报告为例讲解“现象整理”。
复现故障的试验计划是找到故障根因的途径。在寻找故障根因的过程中,试验计划的制订会受到一定制约,如果片面放大故障疑点的范围,可能容易复现故障现象,但增加了变量和分析的难度;反之则难以复现故障现象。试验计划者需要权衡、拆解这些影响因素,可能需要反复试验。
故障排查之初先制订试验计划,大体分成如下几个步骤,如图1.2所示。
 
    图1.2 故障排查流程图
(1)在故障排查相关人员中(特别注意“相关”的真正含义),对已知信息做到公开。目的是相关人员做到信息对等,要求讲解人客观释放信息,切忌“带节奏”和“我认为”。
(2)相关人员进行“头脑风暴”“开放讨论”“专题会议”,通过上述形式讨论出试验流程,其中可能包含多条试验计划,每条提案都需要给出分析、猜想、试验计划、预想结果,形成一条完整的试验计划链。并对多种提案进行取舍,将试验按优先级排序。
(3)做好试验记录。根据提案的试验计划,记录执行过程和结果。及时对比试验与预想结果的偏差,并分析结论或纠正试验走向。若试验结果和预先分析偏差过大,需要核查试验实施的正确性,考虑调整试验或选择其他试验。良好的试验记录除了有助于故障分析,还能保证测试安排有序、有效,避免重复和混乱的试验安排。
发现真实的故障现象并分析原因,是故障排查流程的第一步,影响着后续解决方案。从实践的教训中总结出的常见误区有以下两个。
(1)不清晰的战术执行步骤。
(2)对故障现象“夹带”个人或他人的主观想法。实际工程中,根据故障复杂、紧急程度等差异,可能是一位工程师单兵排查,或技术方向相同的几位工程师并行排查,或是技术方向不同的工程师按模块分类排查。参与故障排查的组织越复杂,误区中的做法所造成的混乱越明显。
故障排查工作的重要原则是客观。很多故障排查流程混淆了“信息”和“猜想”,没有弄清“已知(客观事实)”和“自己以为知(主观认识)”。
已知信息是出发点、根据地。
故障排查试验过程一定需要“猜想”,但是如果搞错起点,从猜想出发,试验的结果往往是回到真正的原点(已知信息),白跑一圈。
下面列举一个故障案例报告,体会“故障信息”与“猜想”的差别。
在一个工控CPCI(Compact PCI,紧凑型外设部件互连)标准机箱和控制器应用场景中,机器上电启动2s左右出现掉电,比较直接的观感是“呼”风扇骤停;另外,系统偶尔能够上电启动成功,故障现象不稳定。
得到FAE(Field Application Engineer,现场应用工程师)的故障报告邮件:
“机器启动后,风扇忽然停转,看着像电源供电功率不足,再启动仍然是这样……”。
尽管上述报告只是一封邮件的简述,不是一个正式的报告,但是仍包含一些“硬伤”。
其中,如1.2.2节所述误区2,“夹带”了个人主观看法“看着像供电功率不足”。这种描述对故障的排查是有负面影响的,负责故障排查的工程师应予以滤除。
笔者回复的邮件是:“对于计算机系统,有时表象和本质存在巨大差距;一个仅插入控制器而无I/O设备的机箱,且在不了解电源设计额定功率的情况下,不能用‘看着像电源供电功率不足’来描述故障现象……”。
以案例2为例,“机箱和控制器系统会概率性地出现启动2s左右时骤停”是已知信息;电源功率不足则是一种猜想。
如果把电源功率不足这个猜想“夹带”进已知信息,试验方案很可能就设定为更换一个功率更高的电源。而且因为系统存在一定的概率能够启动,测试几次恰恰能够“正常启动”(原因在1.3节解读中叙述,上述逻辑不矛盾,现象不神奇,是真实发生的情况)。测试“正常”的样机又被拿到演示现场使用,结果再次宕机,进而得到在某现场即发生故障的“玄学”结论……。
而正确的步骤为:已知信息是“系统启动时可能宕机”,猜想是“电源功率可能不足”,计划则应该是对比系统“轻载”和“重载”的差异。例如系统轻载启动10次,重载启动10次,进行结果对比,如果通过试验发现带载差异不是影响系统启动的直接原因,我们仍需要回到原点寻找宕机原因。
前文讲解如何客观认识故障现象和选择试验,下面通过一个正面的案例讲解如何做试验记录及“现象整理”,注意“客观”仍是核心思想。
故障案例现象的初步描述:某系统计算机核心模块处于稳定产品状态,因系统关键元器件/部件需要兼容代替,更换主存储器物料和电路板生产厂商后,出现了一定比例的内存数据错误和丢失的故障,并伴有在温度循环试验中,故障概率升高的现象……。故障案例整理报告如表1.1所示。
表1.1 某计算机模块故障现象整理表
 
    注:因本案例的行业特殊性,将现象描述做部分修改,请读者体会方法而非案例本身。
整体上看,这是一份高质量试验报告,尽管故障现象暂时仍不能直接指向故障的根本原因,但报告有以下几个突出优点。
(1)没有主观倾向性描述。
从案例的描述看,故障出现过程中涉及的因素(影响变量)包括器件、电路板、温度等。在故障出现的初期,描述呈现主观性是常见误区,极易“夹带”假象。特别是更换部分器件后,被测单板的数量可能有限(甚至不足),测试环境通常是混搭的,受干扰的要素较多,测试人员在此状态下的初步报告(口头报告或未整理的邮件报告)常常带有主观性,即使熟悉该系统的研发人员初见故障现象,认识可能也是片面的。
而在该测试报告中,计划者和测试者梳理了单板状态,在有限的测试条件下(被测单板较少),对测试环境变量进行了约束,在现象报告中没有出现“可能”“觉得”这一类词汇。
(2)有清晰的战术意图。
测试计划者有明确的战术意图,即暂时排除温度这个变量,计划者主动进行影响因素的控制(先控制常温条件,可以考虑下一步再做温度循环试验)。
这份测试报告在计划上已经排除了一些主观倾向,因为影响变量越多,测试人员对现象反馈越容易混乱。同时,清晰的战术意图有助于测试执行人反馈客观、清晰的报告。
可能会有读者对上文的报告和阐述持有异议:一份不能完整复现现象的报告,一些不确定的假说,能解决问题吗?板子的编号都不完整,1、3、5、6,这种支离破碎的报告何谈质量?
了解工程实践的读者知道,工程现场情况可能非常复杂。可能包含如下场景:
报告中的样板只有6片,除了4片测试板,另外2片可能在执行任务,甚至正在无法操控的现场出现了故障,报告中这4片单板需要平行复现,研究对策,没有更多的样本供测试。
报告中Ⅰ型SoC是高值物料,替换试验成本极高,甚至没有机会替换。内存颗粒相对价格低,因此可以更换6#板的内存为Ⅰ型,二次查看故障状态,以核验电路板的差别问题。
“兵无常势,水无常形”,工程现场无一定之规。“清晰的意图”和“客观的报告”是工程中进行灵活故障排查的原则,在该原则下,方法是灵活应用的。
复现故障现象是解决问题的入口,本节介绍试验方案的取舍、开展试验的一般原则,而现象整理是试验高效率的保障。在认知故障现象层面,最重要的原则是客观。按部就班地执行,客观地观察、记录、思考。