設定 ACTS 測試

本頁說明如何設定 ACTS 測試。

設定來源

Android Comms Test Suite (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 中。適合保留環境或測試資訊,例如手機是否位於計量付費資料環境中,或測試收集資料的時間長度。

AndroidDevice 的特殊案例

如果您希望擁有多部具有不同屬性的裝置,為方便進行開發,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