ACTS 電話服務測試

Android 通訊測試套件 (ACTS) 會執行連線堆疊 (例如 Wi-Fi、藍牙和行動網路) 的自動化測試。測試工具需要 adb 和 Python。該工具位於 tools/test/connectivity/acts 中。

本頁面說明如何為擁有兩支手機的使用者,執行 Android 開放原始碼計畫 (AOSP) 中所提供的基本電話測試。

必要條件

如要執行 ACTS 通訊測試,您必須能存取完整的 Android 存放區,並在要測試的裝置上安裝 userdebug 版本。

下載 Android 存放區

按照「下載原始碼」中的操作說明,在您要測試的裝置具有 USB 連線的機器上下載 Android 存放區。

  • Android 開放原始碼計畫是不斷擴增的數 GB 程式碼集。請據此調整您對下載時間的預期。
    • 如果機器有大小限制,請在 repo init 指令中加入 --depth=1
  • 如要取得 ACTS 工具的未來更新內容,請前往 Android 根目錄:
    • 使用 repo sync tools/test/connectivity
    • repo sync external/sl4a

驗證裝置上的 userdebug 版本

在測試裝置上安裝 Android 的 userdebug 版本。

  • 按照「建構 Android」一文中的指示建構存放區。
  • 依照「刷新裝置」中的說明刷新裝置。
    • adb shell getprop ro.build.type 指令應傳回 userdebug
    • 如果無法使用 ro.build.type,則使用者偵錯版本會允許以根層級 (終端機 #) 執行 ADB 殼層。

建構及安裝 SL4A

如要建構及安裝 Android 適用的指令碼處理層 (SL4A),請按照「Android 適用的指令碼處理層」中的指示操作。「預設將 SL4A 版本新增至 Android Builds」一節為選用項目。

建構 SLA4 後,最後的記錄訊息會包含 sl4a.apk 檔案的位置,您必須在所有裝置上安裝這個檔案。以下是記錄訊息的範例:

Copy: out/target/path/to/sl4a.apk

設定要測試的裝置

請使用下列 ACTS 建構/工具需求設定裝置:

  • 如果無法使用 ADB 供應商金鑰,請在 DUT 上輕觸「Trust this computer」彈出式視窗。如果有 ADB 供應商金鑰:

    • DUT 的 ADB 供應商金鑰和驅動程式不得重複。
    • 如要一律啟用 USB 偵錯功能,請使用 export ADB_VENDOR_KEYS=/path/to/directory/with/vendor/keys 將來源樹狀結構中的 ADB 供應商金鑰新增至 ~/.bashrc (或等效項目),其中 /path/to/directory 是主機上的完整路徑。如要排解 ADB 問題,請參閱「在硬體裝置上執行應用程式」。
  • 允許 USB 偵錯:安裝 ADB 驅動程式時,ADB 裝置可能會在裝置上觸發提示,要求允許 USB 偵錯。

  • 使用 $ adb install -r <ANDROID_ROOT>/path/to/sl4a.apk 安裝 sl4a.apk

  • 請確認手機使用 USB 2.0 連線至測試伺服器。

  • 這些測試需要使用實際的行動網路,因此請將 SIM 卡插入手機,並將手機放在訊號良好的區域。

  • 按照「撰寫設定檔」一節所述,將所有 SIM 卡新增至 JSON 檔案。

設定環境

在設定環境之前,請確認您已安裝 Python 3.4 以上版本。

執行:

sudo apt-get install python3-setuptools
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip setuptools
sudo apt-get install protobuf-compiler

安裝 ACTS

執行:

cd <ANDROID_ROOT>/tools/test/connectivity/acts/framework/
sudo python3 setup.py develop
cd -

如要驗證安裝狀態,請執行 act.py -h,系統會列出可用指令的清單。

編寫設定檔

如要執行測試,您必須建立含有設定資訊的檔案。以下是 .config 的範例檔案。在 Android 存放區的 tools/test/connectivity/acts/framework/sample_config.json 下方,也有類似的檔案。將 XXXXXXX 替換為裝置序號,提供 ACTS 執行電話測試所需的最低資訊。

{
  "_description": "Minimum Telephony Config",
  "testbed":
  [
      {
          "_description": "A testbed listing two AndroidDevices for adb.",
          "name": "ExampleTestBed",
          "AndroidDevice": [{"serial": "XXXXXXX", "adb_logcat_param": "-b all"},
                            {"serial": "XXXXXXX", "adb_logcat_param": "-b all"}]
      }
  ],
  "logpath": "/path/to/logs",
  "testpaths": "/path/to/android/repo/tools/test/connectivity",
  "sim_conf_file": "/path/to/simcard_list.json"
}

使用表格中的鍵設定測試參數。如需其他選項,請參閱「其他設定選項」。

_description 對整個設定檔的內容加註
testbed 指定可執行測試的環境
(testbed) _description 針對每個測試平台提供註解,因為 ACTS 可以指定個別測試平台
(測試版) name 用於從指令列呼叫的測試平台名稱
(testbed) AndroidDevice 測試指定的特定裝置清單
注意:清單中可能會列出多部裝置。執行互相呼叫的手機測試預期會有兩部裝置,如果裝置數量少於兩部,測試就會失敗。如果清單中列出兩部裝置,但測試只預期會有一部,則系統會在第一部裝置上執行該項測試。
(testbed)(AndroidDevice) serial 裝置序號 (印在 adb devices 上)
(testbed)(AndroidDevice) adb_logcat_param 於測試期間呼叫 adb logcat 時傳遞的參數
logpath 記錄檔儲存在測試伺服器上的地點
testpaths 測試案例程式碼的位置
sim_conf_file 列出可用 SIM 卡的 .json 檔案位置
SIM 卡清單包含卡片 ID、卡片功能、作業員和電話號碼。
{
    "sim-card-ID-here": {
        "capability": [
            "voice",
            "ims",
            "volte",
            "vt",
            "sms",
            "tethering",
            "data"
        ],
        "operator": "tmo",
        "phone_num": "12345678901"
    },
...
}

如要找出電話號碼,請在裝置上依序前往「系統」>「關於手機」。 SIM 卡 ID 通常會印在 SIM 卡上,或是在裝置的「系統」>「關於手機」>「SIM 卡狀態」下方。運算子字串會在 tools/test/connectivity/acts_tests/acts_contrib/test_utils/tel/tel_defines.py 中定義,然後搜尋 CARRIER_

其他設定選項

Android 存放區中 tools/test/connectivity/acts/framework/acts/config/entries.pyentries.py 檔案包含主要指令列設定選項的定義。

您也可以搜尋 self.user_params.get,在程式碼中找出特定測試參數。

執行測試

設定檔寫入後,透過指令列執行測試。雖然有許多選項,但最簡單的方法是使用 -c filename.config -tc TestCase:name。本範例使用名為 minimum.config 的設定檔:

act.py -c minimum.config -tc TelLiveVoiceTest:test_call_mo_voice_general

成功執行的測試應有類似以下的最終輸出訊息:

INFO Summary for test run ExampleTestBed@yyyy-mm-dd_15-23-43-614: Requested 1,
Executed 1, Passed 1, Failed 0, Skipped 0, Error 0

執行多項測試

如要在多個檔案中執行特定測試案例,請建立測試檔案,並使用旗標 -tf 傳遞,如回歸測試套件範例所示:

TelLiveVoiceTest:
test_call_mo_voice_general,
test_call_volte_to_volte,
test_call_3g_to_3g

TelLiveDataTest:
test_airplane_mode,
test_4g,
test_3g

TelLiveSmsTest:
test_sms_mo_4g,
test_sms_mt_4g,
test_sms_mo_3g,
test_sms_mt_3g,
test_mms_mo_4g,
test_mms_mt_4g

此範例指令假設檔案名稱為 regression_suite.

act.py -c minimum.config -tf regression_suite

多次執行測試

如要多次執行測試案例 (-tc) 或測試檔案 (-tf),請在指令中加入 -ti # (測試迭代)。