本篇是故事二的「理解」篇。
本篇要回答:把「IDE 與 Terminal 結果矛盾」拆成直接原因與促成因素,各自是什麼?
證據到齊之後,誘惑是寫下一句結案報告:「IDE 選錯 interpreter,改掉就好。」它不算錯,但它只回答了「這一次為什麼壞」,沒有回答「為什麼這類問題可以存在這麼久、還這麼難發現」。
修好當下的第一反應是鬆一口氣,第二反應是想把這頁翻過去。事故調查的紀律恰好相反:修好之後才是分析的開始,因為只有這時候你才有完整的證據可以分帳。
把證據攤開,分成兩本帳。
可能的直接原因(最接近失效結果的機制,個案中至少命中第一項):
促成因素(讓問題容易發生、難以察覺、修好又復發的條件):
兩本帳的差別在於處置方式:直接原因修一次就好;促成因素不處理,同一類事故會換一套皮膚回來——下次可能不是 pytest,是 formatter、是部署腳本、是任何依賴「哪個 python」的東西。
區分證據等級。已確認事實:兩份清單中的機制皆可在任何機器上重現驗證。合理推論:個案的長期卡關由「直接原因+多項促成因素疊加」解釋,而非單一失誤。
留下一句可以貼在測試報告旁邊的話,也是本篇結論:
「在我電腦可以跑」若沒有附上 interpreter、版本與依賴條件,只是一句無法重現的環境描述。
下一篇(Day 10)把促成因素逐條變成防再發措施:不要只叫大家記得 activate,讓專案自己說明怎麼跑。