Linux 核心是如何測試的?
當我們談論像 Linux 作業系統這樣龐大的東西時,一個隨之而來的問題是它們是如何如此有效地工作的。當然,它執行起來非常流暢,但它們是如何處理可能存在於整個系統原始碼中任何位置的錯誤和 bug 的呢?
我們知道,我們每三個月就會得到一個新的 Linux 作業系統,並且在這段時間裡,大約兩週的時間被保留用於“合併視窗”。這個視窗是所有已經開發和批准的程式碼將被合併到 Linux Torvalds 樹(主線)的時間。所以,剩下的時間基本上用於修復 bug 和穩定系統。
有大量的開發者參與專案釋出和維護,並確保 Linux 核心儘可能地無 bug。但需要注意的是,他們不僅依賴於開發人員的經驗和知識來修復 bug,他們還使用各種工具,從自動化測試、程式碼靜態分析等等。
讓我們深入瞭解這些工具,以瞭解它們為 Linux 開發人員帶來的價值。
持續整合
核心 CI 是 Linux 核心上的一種自動化工具,它是 Linux 基金會的一個專案。目前,它是 Linux 核心最完整自動化測試和持續整合工具之一。
LKFT(Linux 核心功能測試) 是 Linux 核心上另一個自動化工具,它是 Linaro 的一個持續整合工具,它在多個核心開發樹上執行功能測試。它主要用於識別 bug 和迴歸。
程式碼靜態分析
Smatch 是一種靜態分析工具,它是專門為 Linux 核心開發的。它使開發人員能夠識別程式設計錯誤,例如訪問空指標、緩衝區溢位、死鎖、使用未初始化變數等等。
Sparse 也是 Linux 核心上的另一個工具,最初由 Linus Torvalds 編寫並整合到 Linux 原始碼中,旨在查詢核心中可能的編碼錯誤。
自動化工具測試
kselftest 是 Linux 原始碼中可用的另一個測試框架。它能夠測試核心的特定部分。測試主要用 C 語言或 shell 指令碼編寫。
Linux 測試專案 (LTP) 也是 Linux 核心上的另一個專案,它提供了一套自動化測試,不僅驗證 Linux 核心的功能,還驗證作業系統的可靠性和穩定性。