測試是 Fuchsia 貢獻者用來維持品質和速度的持續整合程序的核心。良好的測試是團隊的資產,而不良的測試則可能成為負擔。
這份文件將回顧與 Fuchsia 測試相關的主題,並提供其他資源的參考資料。本文假設您熟悉一般軟體測試概念。
Fuchsia 平台測試應達成專案目標,並符合 Fuchsia 的架構原則:
- 簡單:簡單的測試比複雜的測試更好。相較於整合、系統或手動測試,單元測試是較好的選擇。在 Fuchsia 上測試解決方案時,應使用與正式版相同的機制。
- 安全:測試會套用與正式版軟體相同的安全、隔離和密封機制。測試會利用這些機制來獲取優勢。系統的安全屬性可供測試。
- 可更新:請務必測試穩定介面,包括Fuchsia 系統介面的元件和其他部分。如果受測元件有所變更或完全替換,只要測試僅使用元件之間的介面,就應能繼續運作。Fuchsia 樹狀結構外部的測試不應假設平台元件的實作詳細資料。
- 效能:Fuchsia 測試應快速、可靠且彈性。測試執行速度越快,就越容易疊代,且耗用的資源越少。測試不應不穩定,或對在 Fuchsia 上執行的方式過於挑剔。在模擬器上執行測試比在實際硬體上執行測試更輕鬆。
Fuchsia 的測試有何不同?
作業系統是複雜的程式
軟體開發與測試的每個領域都會帶來獨特的挑戰。測試作業系統時,會遇到特殊問題,並有相應的解決方法,就像測試行動應用程式、伺服器軟體或太空船一樣。
舉例來說, <這與一般應用程式測試形成對比,因為應用程式測試是在假設作業系統正常運作的情況下執行。
隔離和密封性
元件架構會將每個元件放在元件資訊清單中嚴格定義的沙箱環境中執行,藉此達成 Fuchsia 的安全目標。接著,系統只允許元件使用以可更新合約類型化的元件功能互連,藉此達成 Fuchsia 的可更新性目標。
測試也可以使用這些相同的隔離和密封機制,做為依附元件注入的形式。舉例來說,受測試的元件可由測試架構提供其依附能力的測試替身,讓合約測試更輕鬆。
多個存放區
Fuchsia 是大型專案,有許多外部依附元件,且會針對數百個其他原始碼存放區建構。多存放區開發為測試帶來獨特挑戰。WebRTC 專案的貢獻者發布了網誌文章,詳細說明開發 Fuchsia 時遇到的許多問題和解決方法。