本頁說明如何設定 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
。