並非崩潰:用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測試,還加深了對進程退出行為的理解。