SDV 測試架構

本文將概要說明 SDV 測試架構,並引導您設定、配置及執行測試。使用 SDV 測試架構進行端對端測試。這項工具是以 Mobly 為基礎建構而成,您可以使用 Python 撰寫測試。

設定環境

本文假設您已為 SDV 設定工作站。如要執行架構測試,請安裝 virtualenv

Python 依附元件

建議您使用建構設定,將測試、Python 及其依附元件封裝為可執行檔,藉此管理 Android 中的依附元件。您必須在 SDV 測試存放區中採用這種做法。

SDV 測試架構程式庫預設會提供下列依附元件:

  • mobly
  • absl-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 選項。

  1. 複製範本內容:

    • sdv-one-device.xml
    • sdv-two-devices.xml
    • sdv-three-devices.xml
  2. {MODULE} 更新為測試的模組名稱。

  3. 在每部裝置上新增 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 設定。

  1. 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
  2. 根據測試類型新增對應資訊:

一個 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=device1name=device2)。

測試執行作業

這些操作說明假設您已完成設定可運作的 SDV 環境。

設定環境

架構不會啟動 Cloud Virtual Device (CVD) 執行個體,因此您必須先啟動執行個體,才能執行測試。

  1. 設定環境並啟動 SDV 目標:

    . build/envsetup.sh
    lunch <TARGET>
    
  2. 啟動第一個 Cloud Virtual Device (CVD) 執行個體:

    cvd create --config=sdv_core_instance1
    
  3. 啟動第二個 Cloud Virtual Device (CVD) 執行個體 (適用於多 VM 測試):

    cvd create --config=sdv_core_instance2
    
  4. 啟動第三個 Cloud Virtual Device (CVD) 執行個體 (適用於多部 VM 測試):

    cvd create --config=sdv_core_instance3
    

執行 atest

atest <TestModuleName>

執行 CATBox

這些指令假設您位於存放區的根目錄中。

  1. 建構 CATBox:m catbox
  2. (選用) 在 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