ACTS 電話服務測試

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

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

必要條件

如要執行 ACTS 電話測試,您應可存取完整的 Android 存放區,並在要測試的裝置上安裝使用者偵錯版本。

下載 Android 存放區

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

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

在裝置上驗證使用者偵錯版本

在測試裝置上安裝 Android 使用者偵錯版本。

  • 按照「建構 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 的範例檔案。tools/test/connectivity/acts/framework/sample_config.json 下的 Android 存放區中會提供類似的檔案。將 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 指定可執行測試的環境規格
(測試版) _description 針對每個測試床加上註解,因為 ACTS 可以針對個別測試床
(測試版) name 用於從指令列呼叫的測試平台名稱
(測試版) AndroidDevice 測試目標的特定裝置清單
注意:此處可能會列出多部裝置。執行電話呼叫的測試會預期有兩個裝置,以及數量變少就會失敗。如果這裡列出兩個裝置,且測試預期只有一個裝置,表示測試會在第一部裝置上執行。
(測試版)(AndroidDevice) serial 裝置的序號 (從 adb devices 列印)
(測試版)(AndroidDevice) adb_logcat_param 在測試期間呼叫 adb logcat 時傳遞的參數
logpath 用來儲存記錄的測試伺服器上的位置
testpaths 測試案例程式碼的位置
sim_conf_file .json 檔案列出可用 SIM 卡的位置
SIM 卡清單包括卡片 ID、卡片功能、電信業者和電話號碼。
{
    "sim-card-ID-here": {
        "capability": [
            "voice",
            "ims",
            "volte",
            "vt",
            "sms",
            "tethering",
            "data"
        ],
        "operator": "tmo",
        "phone_num": "12345678901"
    },
...
}

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

其他設定選項

位於 Android 存放區 tools/test/connectivity/acts/framework/acts/config/entries.py 中的 entries.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 # (測試疊代)。