測試套件
測試必須具有下列設定,才能成為 VTS 的一部分
在「Android.bp
」中。
test_suites: ["vts"],
此外,將測試新增至 general-tests
套件後
的一部分,用於預先提交檢查的測試對應套件中。
測試設定
在大多數情況下,請測試設定,也就是 Trade 使用的 XML 檔案 系統會自動建立用於執行 VTS 測試的聯盟 產生的輸出內容。但您仍可自訂 測試設定
建立自訂測試設定檔
從頭開始建立新的測試 XML 檔案可能會很複雜,因為您必須瞭解測試套件的工作方式,以及各個測試執行程式的差異。自動產生的測試設定檔旨在 整個流程
如果必須自訂測試 XML 檔案,則可使用 自動產生檔案做為起點
如要找出系統產生的測試設定檔,請先執行 make
指令來建構設定,如下所示。
$ m VtsHalUsbV1_1TargetTest
您可以在建構目錄中,根據模組名稱搜尋設定檔,如下所示。
$ find out/ -name VtsHalUsbV1_1TargetTest.config
檔案可以有多個副本,您可以使用其中任何一個。將 .config
檔案複製到 Android.bp
檔案所在的目錄。
如果 Android.bp
檔案中只有一個測試模組,您可以
將 XML 檔案重新命名為 AndroidTest.xml
,且建構系統會自動
做為測試模組的設定檔。否則
將 test_config
屬性新增至模組,如
範例。
test_config: "VtsHalUsbV1_1TargetTest.xml",
您現在有一個測試設定檔,可用於處理及實作自訂項目。
強制使用 ADB 根目錄執行測試
大部分的 VTS 測試都需要 Root 權限才能執行。如果測試設定檔是自動產生的,您可以將下列屬性新增至 Android.bp
。
require_root: true,
如果您自訂了測試設定檔,請將下列內容新增至測試 XML 檔案。
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
在測試期間停止架構
許多 VTS 測試不需要 Android 架構就能執行,如果在架構停止運作時執行測試,測試就能穩定執行,不會受到裝置異常的影響。如果測試設定
檔案,因此您可以在 Android.bp
中加入下列屬性。
disable_framework: true,
如果您自訂了測試設定檔,請將下列內容新增至測試 XML 檔案。
<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>
新增其他測試引數
部分 gtest 測試可能需要較長的時間才能執行。如果是這樣,您可以將 測試執行工具選項
舉例來說,下列項目中的 native-test-timeout
設定可讓測試以 3 分鐘的逾時時間執行,而非預設的 1 分鐘。
<test class="com.android.tradefed.testtype.GTest" >
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNfcV1_0TargetTest" />
<option name="native-test-timeout" value="180000"/>
</test>
要求最低 API 級別
部分 VTS 測試只能在具備最低 API 級別的裝置上執行。如果
測試設定檔是系統自動產生的測試設定檔
屬性設為 Android.bp
。
min_shipping_api_level: 29,
或
vsr_min_shipping_api_level: 202404,
如果測試設定檔已自訂,請將 套用至測試 XML 檔案。
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="min-api-level" value="29" />
</object>
或
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="vsr-min-api-level" value="202404" />
</object>
API 級別屬性
Android 12 定義了 ro.board.first_api_level
和
ro.board.api_level
屬性,顯示供應商圖片的 API 級別
這些裝置。將這些屬性與 ro.product.first_api_level
結合後,測試套件會為裝置選擇適當的測試案例。
Android 13 定義了 ro.vendor.api_level
方法是使用
ro.product.first_api_level
、ro.board.first_api_level
和
ro.board.api_level
屬性。
詳情請參閱「供應商 API 級別」。
ro.board.first_api_level
ro.board.first_api_level
屬性是供應商圖片時的 API 級別
將符合資格的 SoC
廠商凍結第一時間
。這不取決於裝置的啟動 API 級別,而是取決於定義此值的 SoC 第一個 API 級別。這個值會在 SoC 的整個生命週期內保持不變。
如要設定 ro.board.first_api_level
,裝置製造商可以在 device.mk
檔案中定義 BOARD_SHIPPING_API_LEVEL
,如以下範例所示:
# BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
BOARD_SHIPPING_API_LEVEL := 23
系統會自動將 ro.board.first_api_level 屬性定義為裝置上的 vendor/build.prop
。這個屬性是由供應商「init
」設定
上傳資料集之後,您可以運用 AutoML
自動完成部分資料準備工作
ro.board.api_level
ro.board.api_level
屬性是供應商映像檔的目前供應商 API 級別,該映像檔具有 YYYYMM
格式,其中供應商 API 已凍結。是
自動設定容器
ro.vendor.api_level
ro.vendor.api_level
屬性是在 Android 13 中導入,用於顯示供應商映像檔必須支援的 API 級別。系統會自動將此值設為 ro.product.first_api_level
,如果 ro.board.first_api_level
存在且 ro.board.api_level
設為比 ro.product.first_api_level
早的 API 級別,則會設為 ro.board.api_level
。這個版本最後會顯示
替換為對應的供應商 API 級別 (如果設為版本)
從 ro.product.first_api_level
(大於或等於 35
)。您可以參考這個屬性,將需要供應商映像升級的供應商實作項目測試排除於 SoC 的供應商需求。
使用 VTS 進行分割程序
在 Android 10 以上版本中,可執行資料分割程序 同時透過 VTS 和 CTS-on-GSI 方案進行測試,請按照下列步驟操作: 操作說明。
run vts --shard-count <number of devices> -s <device serial> ...
這個指令會將 VTS 計畫分割成多個資料分割,並在多部裝置上執行。
run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...
這項指令會將 CTS-on-GSI 計畫分割為多個區塊,並在多部裝置上執行。