用途:当测试莫名失败、行为发生回归、缺陷间歇出现或环境相关,或修复后问题复发、转移时,用这套方法定位根因,而不是靠猜测打补丁。
主要能力与步骤:
- 复现失败:记录精确步骤、输入与环境;对间歇性失败刻画频率与触发条件(负载、时序、数据形态、并发);本地无法复现时找出环境差异(系统、依赖、配置、数据量、网络)。无法复现时对代码埋点以捕获下次出现时的状态。
- 先观察后推理:收集完整报错与堆栈原文、相关日志、系统状态(内存、CPU、磁盘、连接数、队列深度)、近期变更(提交、配置、依赖、基础设施)与数据状态,区分事实与解释。
- 生成并排序假设:列出可能原因,按证据支持度、可测试性、影响排序;做“差异诊断”,关注代码、配置、数据、依赖、基础设施的变化。
- 二分隔离:用 git bisect 二分提交,或通过 stub 组件、最小化失败输入、逐个替换环境变量来减半搜索空间。每步应缩小一半,否则换维度。
- 确认根因并修复:解释从原因到症状的完整因果链,预测其他应成立的现象并验证;在根因处修复而非症状,验证原复现已解决并跑更广测试防回归,编写回归测试固化该失败。
输出格式:按症状、观察、假设表、隔离过程、根因、后续跟进的结构记录。
限制与注意事项:资料未说明该方法的授权、收费或平台依赖。常见陷阱包括:无确认根因就改代码;只找支持自己的证据;用空值检查、重试或 try-catch 掩盖症状;未复现就动手;一次改动多处导致无法判断哪项生效。必要时可配合五问根因法或因果推断方法。