測試是 Fachsia 貢獻者為了維持品質和速度所實踐的持續整合程序的核心。良好的測試會成為團隊的主導權,而不良的測試則可能衍生出責任。
本文件審查有關在 Fuchsia 測試的主題,並提供其他資源的參考資料。本文假設您已熟悉一般的軟體測試概念。
Fuchsia 平台測試應符合專案目標,且符合 Fuchsia 架構原則:
- 簡易:簡單的測試比複雜的測試更好。單元測試較適合使用整合、系統或手動測試。在 Fuchsia 上測試解決方案應採用與實際工作環境相同的機制。
- 安全:測試需遵守用於實際工作環境軟體的安全性、隔離和隱密性機制。這些測試也利用同樣的機制來獲取好處。系統的安全性屬性可供測試。
- 如果測試中的元件有所變更或完全取代,只有運動之間的介面應能繼續運作。在 Fuchsia 樹狀結構外的測試不應假設平台元件的實作詳細資料。
- 效能高:在 Fuchsia 執行的測試應快速、可靠且靈活。如果快速執行測試,會更容易疊代並減少資源。測試不應模糊不清,也不應針對 Fuchsia 的執行方式挑選。相較於實際硬體,在模擬器上執行測試更容易。
Fuchsia 的測試有何不同?
作業系統是複雜的程式
每個軟體開發與測試領域都有獨特的挑戰。測試作業系統、伺服器軟體或太空船,因此在測試作業系統時有一些特殊問題和解決方案。
相較於一般應用程式測試,這類測試會在某些系統假設為可運作的作業系統上執行。
隔離與歷史
元件架構會在元件資訊清單中明確定義的沙箱環境中執行每個元件,藉此促進 Fuchsia 的安全性目標。然後只允許元件使用設為可更新合約的「元件功能」建立互連網路,藉此達到 Fuchsia 的可更新性目標。
這些隔離機制和隱性機制,也可能由測試用做依附元件插入的形式。舉例來說,系統可針對測試中的元件提供測試替身,以使其仰賴測試控管性能力,讓合約測試變得更容易。
多個存放區
Fuchsia 是一個包含許多外部依附元件的大型專案,並根據數百個原始碼存放區建構內容。多存放區開發帶來獨特的測試挑戰參與 WebRTC 專案的貢獻者發布了一篇網誌文章,詳細說明 Fuchsia 開發過程中遇到的許多問題和解決方案。