本文將概要說明 SDV 測試架構,並引導您設定、配置及執行測試。使用 SDV 測試架構進行端對端測試。這項工具是以 Mobly 為基礎建構而成,您可以使用 Python 撰寫測試。
設定環境
本文假設您已為 SDV 設定工作站。如要執行架構測試,請安裝 virtualenv。
Python 依附元件
建議您使用建構設定,將測試、Python 及其依附元件封裝為可執行檔,藉此管理 Android 中的依附元件。您必須在 SDV 測試存放區中採用這種做法。
SDV 測試架構程式庫預設會提供下列依附元件:
moblyabsl-py測試時必須使用參數化。pexpect互動式指令功能需要此權限。ptyprocess互動式指令功能需要此權限。
如需測試專用的依附元件,請將其納入測試的 Android.bp 檔案。
python_test_host {
…
libs: [
"<DEPENDENCY1",
"<DEPENDENCY2",
…
],
…
}
系統測試類型
您可以使用 SDV 測試架構建立系統測試。架構會區分下列類型。正確分類測試:
- 範例測試:執行 SDV 範例服務,並確認結果符合預期輸出內容。
- 端對端測試:請勿使用 SDV 範例服務。
- 長期測試:專為長時間執行而設計。
- 效能測試:使用
perfetto程式庫。 - 硬體測試:專為在實體裝置上執行而設計,無法在 Cuttlefish (CF) 中執行。
建立測試
使用框架編寫的所有測試都必須位於測試存放區。測試的確切位置取決於測試類型。
設定測試
設定所有測試,以便使用 atest 和 CATBox 執行。
設定 atest
這個架構提供一、二和三個虛擬機器 (VM) 測試的範本。請將以下內容新增到您的 Android.bp 檔案中:
一部 VM
python_test_host {
...
test_config_template: ":sdv_one_device",
}
兩部 VM
python_test_host {
...
test_config_template: ":sdv_two_devices",
}
三部 VM
python_test_host {
...
test_config_template: ":sdv_three_devices",
}
預設範本適用於大多數測試。除非有充分理由,否則請避免建立自訂設定。
更新預設逾時時間
預設逾時時間應足以在本機執行測試。
如果測試在本機上因逾時而失敗,請考慮將測試分割成多個測試。如果測試時間很長,且測試案例很多,可能會造成執行瓶頸。
如果必須設定高於預設值的逾時時間,請繼續閱讀下文。
覆寫預設逾時
架構不支援擴充 atest 執行的範本。
因此,請使用提供的範本,這些範本提供延長的逾時時間。
一個 VM 長期測試
python_test_host {
...
test_config_template: ":sdv_one_device_long_test",
}
兩個 VM 的長期測試
python_test_host {
...
test_config_template: ":sdv_two_devices_long_test",
}
新增註解,清楚說明使用這個範本的目的,並解釋為何需要延長時間 (例如,測試需要下載特定時間長度的構件)。
將檔案推送至裝置
下列步驟說明如何將檔案推送至裝置,以進行atest
設定。
將檔案推送至裝置
架構不支援擴充 atest 執行的範本。
因此,您必須建立 AndroidTest.xml 檔案,完全取代預設範本,並包含裝置的對應 target_preparer 選項。
複製範本內容:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
將
{MODULE}更新為測試的模組名稱。在每部裝置上新增
com.android.tradefed.targetprep.PushFilePreparer。
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
</target_preparer>
</device>
設定 CATBox
如要以套件形式執行測試,必須進行 CATBox 設定。
在
libraries/sdv/sdv_catbox/res/config/中建立新的設定檔,並遵循下列命名慣例:- 測試範例:
sdv-sample-<NAME>-test.xml - 端對端測試:
sdv-e2e-<NAME>-test.xml - 長時間執行的測試:
sdv-long-running-<NAME>-test.xml - 效能測試:
sdv-performance-<NAME>-test.xml - 硬體測試:
sdv-hw-<NAME>-test.xml
- 測試範例:
根據測試類型新增對應資訊:
一個 VM 測試設定
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/one-device" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
兩個 VM 的測試設定
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/two-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
三個 VM 的測試設定
<!-- Copyright 2025 Google LLC -->
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/three-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
預設範本適用於大多數測試。除非有充分理由,否則請避免建立自訂設定。
更新預設逾時時間
如果預設逾時時間不足以完成測試,您可以覆寫該時間。
覆寫預設逾時
如要覆寫預設逾時,請在設定檔結尾處新增以下內容。長時間測試的逾時時間上限應為 10 分鐘。
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
將檔案推送至裝置
以下章節說明設定 CATBox 時,如何將檔案推送至裝置。
將檔案推送至裝置
如要將檔案推送至對應裝置,請在 plan 選項後新增下列設定:
<!-- Automatically pushes config file to device-->
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file"
key="<FILE_NAME>"
value="<REMOTE_FILE_PATH>"
/>
</target_preparer>
</device>
如要在每部裝置上使用這些檔案,請為每部裝置新增設定 (例如 name=device1、name=device2)。
測試執行作業
這些操作說明假設您已完成設定可運作的 SDV 環境。
設定環境
架構不會啟動 Cloud Virtual Device (CVD) 執行個體,因此您必須先啟動執行個體,才能執行測試。
設定環境並啟動 SDV 目標:
. build/envsetup.sh lunch <TARGET>啟動第一個 Cloud Virtual Device (CVD) 執行個體:
cvd create --config=sdv_core_instance1啟動第二個 Cloud Virtual Device (CVD) 執行個體 (適用於多 VM 測試):
cvd create --config=sdv_core_instance2啟動第三個 Cloud Virtual Device (CVD) 執行個體 (適用於多部 VM 測試):
cvd create --config=sdv_core_instance3
執行 atest
atest <TestModuleName>
執行 CATBox
這些指令假設您位於存放區的根目錄中。
- 建構 CATBox:
m catbox - (選用) 在 CATBox 中查看所有可用的 SDV 測試計畫:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
執行測試:
執行單一 VM 測試
NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520
執行兩部 VM 測試
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521
執行三部 VM 測試
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522