Android平台測試
透過集合功能整理內容
?可以依據偏好儲存及分類內容。
AOSP 提供了多種工具和測試套件來測試實作的各個部分。在繼續本部分之前,?應該熟悉以下術語:
- Android 相容裝置
- 可以運行第三方開發人員使用 Android SDK 和 NDK 編寫的任何第三方應用程式的裝置。 Android 相容裝置必須遵守
相容性定義文件 (CDD)
的要求?通過
相容性測試套件 (CTS)
。 Android 相容設備有資格參與 Android 生態系統,其中包括 Google Play 商店的潛在許可、
Google 行動服務 (GMS)
應用程式和 API 套件的潛在許可以及 Android 商標的使用。歡迎任何人使用 Android 原始碼,但要被視? Android 生態系統的一部分,裝置必須與 Android 相容。
- 人工製品
- 工件是與建置相關的日誌,可實現本機故障排除。
- 相容性定義文? (CDD)
- 枚? Android 相容裝置的軟體和硬體要求的文件。
- 相容性測試套件 (CTS)
免費的商業級測試套件,可作?二進位或 AOSP 原始碼下載。 CTS 是一組單元測試,旨在整合到?的日常工作流程中。 CTS 的目的是揭示不相容性,?確保軟體在整個開發過程中保持相容。
CTS 和平台測試?不互相排斥。以下是一些一般準則:
- 如果測試斷言?架 API 功能或行?的正確性,?且應在 OEM 合作?伴之間?制執行,則應在 CTS 中進行。
- 如果測試旨在捕獲平台開發期間的回歸,?且可能需要特權權限才能執行,?且可能依賴實作細節(如 AOSP 中發布的),那??應該是平台測試。
- Google行動服務(GMS)
可預先安裝在裝置上的 Google 應用程式和 API 的集合。
- 谷歌測試(GTest)
GTest 是一個 C++ 測試和模擬?架。 GTest 二進位?案通常會存取較低層級的抽象層或針對各種系統服務執行原始 IPC。 GTest 的測試方法通常與正在測試的服務緊密?合。 CTS 包含 GTest ?架。
- 儀器儀表測試
??測試提供了一個由
am instrument
命令?動的特殊測試執行環境,其中目標應用程式進程使用基本應用程式上下文重新?動?初始化,?且??執行?在應用程式進程虛擬機內?動。 CTS 包含儀器測試。
- 日誌?
Logcat 是一個命令列工具,可建立系統訊息日誌,包括裝置?出錯誤時的堆疊追?以及?使用
Log
類別從應用程式寫入的訊息。
- 記錄
日誌記錄是指使用日誌來追?電腦系統事件,例如錯誤。由於 Logcat 工具中組合使用了多種標準,因此 Android 中的日誌記錄非常複雜。
- 提交後測試
當新補丁提交到公共核心分支時,會執行 Android 提交後測試。輸入
aosp_kernel
作?部分分支名稱,?可以看到具有可用結果的核心分支?單。例如,
android-mainline
的結果可以在
https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid
?到。
- 預提交測試
提交前測試用於防止將故障引入通用核心。
- 貿易聯盟
Trade Federation,也稱? Tradefed,是一個持續測試?架,設計用於在 Android 裝置上執行測試。例如,Tradefed 用於執行相容性測試套件和供應商測試套件測試。
- 供應商測試套件 (VTS)
Android 供應商測試套件 (VTS) 提供了廣泛的 Android 測試功能,促進測試驅動的開發流程,?自動化 HAL 和作業系統核心測試。
平台測試類型
平台測試通常與一個或多個 Android 系統服務或硬體抽象層 (HAL) 層交互,執行測試對象的功能,?斷言測試結果的正確性。平台測試可能:
- (類型 1)使用 Android ?架練習?架 API。正在執行的具體 API 可包括:
- 用於第三方應用程式的公共 API
- 用於特權應用程式的隱藏 API,?係統 API 或私有 API(
@hide
, or
protected
,
package private`)
- (類型2)直接使用原始?定器或IPC代理程式呼叫Android系統服務。
- (類型 3)使用低階 API 或 IPC 介面直接與 HAL 互動。
類型 1 和類型 2 測試通常是儀器測試,而類型 3 測試通常是 GTest。
下一步是什??
以下是?可能會閱讀的後續文件的?單:
這個頁面中的內容和程式碼範例均受《
內容授權
》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2024-03-18 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"?譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]