並非崩潰:用AI除錯CI
一位開發者花費數小時除錯一個CI冒煙測試,該測試錯誤地報告了崩潰。透過使用AI和定製的崩潰捕獲工具包,他們發現程序正常退出,但測試誤解了訊號。
在更新個人專案Kinjo的依賴項時,一位開發者遭遇了一個令人困惑的CI測試失敗。Kinjo是一個用於在終端介面瀏覽本地DNS-SD和mDNS服務的工具。其CI套件包含一個冒煙測試:在tmux中啟動Kinjo,傳送一些按鍵,然後檢查其是否正常退出。然而,測試間歇性地報告“drive-tui: pane exited via a signal (no exit code)”,暗示發生了崩潰。
開發者最初認為Kinjo確實崩潰了,但經過數小時的排查——包括多次AI會話、多個被丟棄的假設以及開發一個小型崩潰捕獲工具包——他們發現Kinjo實際上成功退出了。問題的核心在於測試如何解釋程序的退出狀態。當tmux窗格因訊號而退出時,測試會將其標記為崩潰,但Kinjo在某些情況下會以訊號退出的方式正常結束。
開發者利用AI工具生成和分析多種假設,從資源競爭到庫版本問題,但最終透過自定義工具捕獲了真實的退出序列。他們意識到,需要區分由訊號導致的意外退出和有意使用的訊號。於是,他們改進了測試指令碼,使其能夠正確識別正常退出,從而避免了誤報。這次經歷不僅修復了CI測試,還加深了對程序退出行為的理解。