检测显示正常而用户仍报故障,通常不是“谁在说谎”,而是你和用户跑的不是同一套条件。构造复查条件的目标,是把“正常”和“故障”之间缺失的变量补齐:先固定一个可复现的故障样本,再逐项改变条件,看哪一项能让结果翻转。下面按两种常见情形展开,并给出选择依据、实施动作和例外。
同一份数据,在两种情形下含义完全不同。
区分依据是:故障能否被稳定复现。如果用户能连续几次给出相同现象,偏向情形一,需要缩小到具体条目;如果现象时有时无、换个人或换个时间就不同,偏向情形二,需要先确认对象是否同一。选错方向会让复查变成反复重跑同一个检测,结果永远正常。
当故障可复现时,不要重新跑全量检测,而是围绕那一个样本构造最小条件集。
实施动作的关键是“一次只改一个变量”。如果同时换入口又换设备,即使故障复现,也无法判断是哪一项导致。假设某个条目在聚合检测中一直正常,但用户按特定路径访问时失败;你先把路径固定,再分别用两种设备重放,若只有一种设备失败,复查条件就应写成“该路径加该设备”,而不是笼统的“该条目异常”。这个结果会直接决定下一步:是继续在设备相关环节排查,还是回到路径本身。
例外:如果逐项替换后始终无法复现,不要继续加条件硬凑,应转向情形二,先确认双方看的是不是同一个对象。
当故障不稳定时,复查的重点从“参数”转到“对象”。常见原因是旧内容、旧系统或旧合作关系仍在被访问,而你检测的是新的规范对象。
选择依据是旧对象是否还在承接有效访问。若它仍在被使用,直接退出会把故障从“结果异常”变成“完全不可达”,反而更难排查;若它已无人使用,继续保留只会让复查条件越来越复杂。
记录不足会让复查变成一次性动作,下次故障又要从头猜。至少固定三项:对象(用户实际访问的那个,而非你以为的那个)、入口与路径、以及能让结果翻转的那一项条件。三项之外的信息可以记,但不必作为判断依据。
需要说明的是,某次复查中故障未出现,不能单独证明问题已解决。它还有别的合理解释:条件没抓全、故障本身是间歇性的、或者用户这次恰好走了另一条路径。因此复查结论应写成“在当前条件下未复现”,并注明条件,而不是“已修复”。
复查条件的价值在于可交接。换一个人接手时,照条件重放就能得到相同观察,不必依赖原排查者的记忆。做不到这一点,说明条件还没构造完整。