先别把“检测正常”和“用户正常”当成同一件事。检测工具通常只验证它被设定去验证的路径、节点和判定规则;用户故障则发生在真实访问链路里。要复查,第一步是把双方口中的“正常”拆成可核对的条件:谁在什么入口、以什么身份、从哪个网络、在什么时间、执行了哪一步、看到了什么。只有条件对齐,复查才有意义。
复查方向取决于分歧出在哪里。如果双方访问的是同一页面、同一功能,只是结果不同,优先查路径条件;如果双方看到的是同一现象,但对“这算不算故障”判断不同,优先查判定规则。选错方向,会出现反复检测都正常、用户问题依旧的僵局。
一个假设例子:工具显示页面返回正常,用户却反馈打开后内容空白。若先按路径复测,可能发现用户走的是另一条线路;若先按判定核对,可能发现工具只看了状态码,没看渲染后的内容。两种选择都成立,但前提不同——前者要求能复现用户环境,后者要求能定义“内容正确”的标准。
复查条件不是“再测一次”,而是一组别人可以照着执行、并能得到相同观察的指令。写法上至少包含:入口、身份、操作步骤、预期观察、实际观察、记录时间。缺少任何一项,复查就会退化成各说各话。
把这些写进同一份记录后,复查者不需要再猜“你说的是哪个页面”。动作是让用户和检测方各自填一份,结果是差异会集中在某一两项条件上,而不是散落在“正常”和“故障”两个词里。
请求量、抓取量或某项统计归零,不能单独证明处理正确。它可能有多种解释:统计口径变了、采样窗口不同、用户走的是未纳入统计的入口,或者故障发生在统计之后。把这类现象直接当成“已经修好”,会让复查条件失去意义。
同样,工具显示正常也不能单独证明用户端正常。工具可能只覆盖了部分节点、部分设备或部分判定项。要说明适用条件:如果工具检查范围与用户实际路径不重叠,那么“正常”只代表工具覆盖的那部分正常,不代表用户故障不存在。
可以按这个顺序推进:先固定一组最小复查条件,只改变一个变量,观察结果是否变化。如果改变网络后故障消失,下一步就查网络相关节点;如果改变登录身份后故障消失,下一步就查权限或缓存;如果所有条件对齐后故障仍无法复现,下一步不是继续加检测,而是回到用户侧补充记录,确认故障发生的时间点和操作细节。
动作的结果会直接决定复查范围:能复现,就把复现条件写成新的检查项;不能复现,就把用户记录作为待观察项,约定下一次出现时立即保存现场。例外情况是,用户故障只出现一次且无法补充任何条件,此时任何复查都只能给出“暂未复现”,不能给出“已解决”。
多个角色参与时,分歧往往不在技术,而在谁有权定义“通过”。复查条件里要写明:哪一项由谁确认,出现争议时以哪条记录为准。否则检测方说正常、用户说故障,双方都能找到支持自己的观察。
裁决点可以是一条最小可核对记录,例如同一入口、同一身份、同一操作下的截图或日志时间。它不承诺一定找到根因,但能让下一步讨论从“你信不信我”转到“这条记录还缺什么条件”。具体工具是否支持某项记录、入口在哪个位置,需要按实际使用的软件核对,不能凭通用描述推断。
复查的终点不是让检测结果和用户说法强行一致,而是让每个结论都带上它成立的条件。条件写清楚了,正常与故障就不再是互相否定的两个词,而是两组可以继续核对的事实。