Fuchsia 的相容性測試

Fuchsia (CTF) 的相容性測試是一組測試,旨在為開發人員透過 Fuchsia SDK 提供的應用程式設計介面 (API) 和應用程式二進位檔介面 (ABI) 元素 (例如標頭、FIDL 檔案) 涵蓋範圍。此版本最初是以 RFC 0015 的形式提出,專案程式碼位於 //sdk/ctf

背景、動力和目標

CTF 的用意是判斷 Fuchsia 平台的版本、在特定裝置上執行、正確實作 (或相容) 由特定 Fuchsia SDK 公開的 API 和 ABI。換句話說,它示範出版本已正確實作 Fuchsia。

如果執行 Fuchsia 的系統通過特定 ABI 修訂版本的 CTF 測試,開發人員就能確定為該修訂版本建構的元件能夠在系統上正常運作,而且系統能夠回溯相容該修訂版本。

每個 Fuchsia 平台版本都隨附一組軟體開發套件 (SDK),其中包含工具、程式庫和標頭,可讓開發人員指定 Fuchsia 的 API 和 ABI。我們將 API 和 ABI 稱為平台途徑區域 (又稱 PlaSA)。每個 SDK 都會與一組 CTF 測試配對,以運動其公開的介面區域。測試會以來源和二進位檔格式提供。

CTF 測試並不完整。但無法保證針對單一 SDK 建構的任何元件都能針對 Fuchsia 的任何特定版本執行。因此,CTF 必須搭配產品專屬的測試來補充。

瞭解這點後,就能使用 CTF 以下列方式強制執行相容性:

適用於平台開發人員,包括在 fuchsia.git 工作、系統整合商、產品開發人員和裝置開發人員

CTF 二進位檔測試可針對搭載 Fuchsia 的裝置執行,確保該裝置上的版本與 CTF 的相關 SDK 相容於 ABI。這可以強制執行回溯相容性保證,亦即如果來自特定 SDK 傳遞的 CTF,表示以該 SDK 建構的程式將能繼續運作,但這並非明確指標 (但並非結論)。這也可以確保裝置上執行的軟體不受樹狀結構內測試所執行 (例如樹狀結構外裝置驅動程式) 不會改變平台的行為。

資料表:

執行 → 再次執行 ↓ CTF CTF N + 1
SDK / Product Build 版本 N 答: B
版本 N + 1 的 SDK / Product Build C 答:

在此情況下:

A = 想確保產品版本正確實作其聲稱的 ABI 修訂版本。

B = 想確認產品版本與較新的 ABI 修訂版本相容的使用者。Fuchsia org 不提供這類保證。

C = 想確保產品版本與舊版 ABI 修訂版本回溯相容的使用者。Fuchsia 機構向程式碼鎖定舊版 SDK 的客戶提供這類保證。

SDK 供應商

您可以針對 SDK 建構 CTF 來源測試,確保 SDK 與 CTF 的相關 SDK 相容。此外,CTF 還提供一套適用於 SDK 主機工具的測試套件。這些測試可以確保 SDK 的變更不會破壞開發人員程式碼和工作流程。舉例來說,我們可以針對 API 版本 N 適用的 CTF 建構支援 API 版本 N+1 的 SDK,藉此瞭解 SDK 是否具備 API 相容性。CTF 專案目前唯一支援的 SDK 供應商是 Fuchsia 機構。

資料表:

建立 → 排除 ↓ CTF CTF N + 1
版本 N 的 SDK 答: B
版本 N + 1 的 SDK C 答:

在此情況下:

= 想確認 SDK 正確實作其聲明的 API 級別的使用者。其中包括 Fuchsia 機構 (在樹尖上檢測)。

B = 想確認 SDK 與新版 API 級別相容的使用者。Fuchsia 機構不提供這類保證。

C = 想確認 SDK 與舊版 API 級別回溯相容的使用者。Fuchsia 機構向程式碼鎖定舊版 SDK 的客戶提供這類保證。