設定 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