配置 ACTS 測試

本頁介紹如何設定 ACTS 測試。

配置來源

Android 通訊測試套件 (ACTS)有三個主要配置來源:

  • 命令列介面 (CLI)
  • ACTS設定檔
  • 環境變數

來自這些來源的值被組合成用於運行 ACTS 測試的單一配置。如果在多個位置指定了值,則將根據上述順序覆寫這些值(其中 CLI 優先)。

關於環境變數的說明

使用環境變數進行 ACTS 測試時要小心。這些值對使用者來說是最不可見的,並且不建議在開發人員工作站之外使用。 ACTS自動化測試期間會停用環境變量,以防止環境中毒。

所需的配置變數

每個 ACTS 測試都需要設定以下變數。

ACTS 測試路徑

ACTS 從單一主入口位置運作。因此,跑步者不知道測試路徑的位置。

使用ACTS_TESTPATH環境變數或在命令列中使用-tp / --testpaths標誌設定測試路徑位置。該值可以是目錄列表。

ACTS測試班

ACTS 必須知道要執行哪些測試類別。這可以是正規表示式或測試類別名稱清單。

若要設定此值,請在命令列中使用-tc / --test_class標誌。請注意,此標誌也接受類別名稱清單。類別名稱必須與其對應的檔案名稱相符,例如SampleTest必須在SampleTest.py中找到。

ACTS 日誌路徑

ACTS 必須有一個位置可以將日誌寫入 STDOUT 以外的位置。 ACTS 寫入完整的偵錯日誌,其中包含可協助確定某些測試失敗原因的資料。為了防止混亂,ACTS 不會將這些日誌寫入 STDOUT。

若要設定日誌路徑,請使用ACTS_LOGPATH環境變數或命令列中的-lp / --logpath標誌。

ACTS配置路徑

要執行測試,ACTS 必須知道有什麼測試平台。 ACTS 配置包含測試台中的所有設備以及可能需要的任何特殊測試或環境參數。使用-c / --config在命令列上設定此值。

如果配置中有多個測試台,ACTS 將為每個測試台執行測試。若要僅對清單中的單一測試床執行測試,請使用-tb/--testbed <NAME>命令列參數。

本地工作站範例

大多數 ACTS 用戶在單一 Android 儲存庫分支上進行開發,並且具有與此類似的設定:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'

# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

如果 ACTS 使用者在多個分支上運行,他們通常會從acts/framework目錄運行 ACTS,並使用ACTS_TESTPATH的相對路徑:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'

# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

配置您的測試平台

ACTS 設定檔提供了在硬體設備上執行測試的所有必要資訊:

{
  "testbed": {
    "my_testbed": {
      "my_testbed_value": "value"
    },
    "another_testbed": {
      "AndroidDevice": [
        "53R147"
      ]
    }
  },
  "user_parameter_1": "special environment value",
  "user_parameter_2": "other special value"
}

此配置的基本單元是測試台。在上面的範例設定中,測試床my_testbed是使用單一測試床值建立的。第二個測試床another_testbed有一個特殊的控制器配置,用於保存 Android 裝置清單的資訊。這些設備儲存在self.android_devices下的設備清單中。請注意,如果測試床未指定AndroidDevice對象,則需要AndroidDevice對象的測試類會引發異常。有關 ACTS 附帶的受支援控制器配置的完整列表,請參閱/acts/framework/acts/controllers/中的列表。

所有其他值(不是上一節中提到的特殊值)都儲存在self.user_params中作為字典。這是保存環境或測試資訊的好地方,例如手機是否處於計量數據環境中,或者收集測試數據需要多長時間。

Android 裝置的特殊情況

為了方便開發,當您想要多個具有不同屬性的裝置可用時, AndroidDevice有一些特殊情況。

JSON 設定格式

以下 JSON 中的所有鍵/值對均設定為對應的AndroidDevice物件。如果配置嘗試覆寫AndroidDevice屬性中定義的參數,則會拋出ControllerError

  "AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
                    {"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]

然後在測試腳本中,您可以使用篩選函數來擷取正確的裝置並從裝置物件存取額外的參數:

  def setup_class(self):
      self.pub = next(filter(lambda ad: ad.label == 'publisher',
                             self.android_devices))
      self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
                             self.android_devices))

可選參數

以下是可選參數:

  • adb_logcat_param :附加到adb logcat指令的字串,用於收集 adb 日誌。預設情況下,使用adb logcat -v threadtime -b all 。如果設定了adb_logcat_param ,則覆寫-b all部分。例如,將adb_logcat_param設為-b radio會將指令改為adb logcat -v threadtime -b radio