ACTS 電話測試

Android Comms Test Suite (ACTS)執行連接堆棧的自動化測試,例如 Wi-Fi、藍牙和蜂窩服務。測試工具需要adb 。和 Python,它可以在tools/test/connectivity/acts中找到。

本頁介紹如何為擁有兩部手機的用戶運行Android 開源項目 (AOSP)中提供的基本電話測試。

先決條件

要運行 ACTS 電話測試,您應該有權訪問完整的 Android 存儲庫並在要測試的設備上安裝 userdebug 版本。

下載 Android 存儲庫

按照下載源代碼中的說明在與您要測試的設備有 USB 連接的機器上下載 Android 存儲庫。

  • AOSP 是一個持續增長的數千兆字節代碼庫。相應地調整您對下載時間的期望。
    • 如果機器大小受限,請將--depth=1添加到repo init命令。
  • 要獲取有關 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不可用,則 userdebug 構建允許以 root (終端# )運行 adb shell。

構建和安裝 SL4A

要構建和安裝 Android 腳本層 (SL4A),請按照Android 腳本層中的說明進行操作。默認情況下將 SL4A 構建添加到 Android 構建的部分是可選的。

構建 SLA4 後,最後一條日誌消息包含sl4a.apk文件的位置,您需要在所有設備上安裝該文件。以下是日誌消息的示例:

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

配置設備進行測試

使用這些 ACTS 構建/工具要求配置設備:

  • 如果 ADB 供應商密鑰不可用,點擊 DUT 上出現的信任此計算機彈出窗口。如果 ADB 供應商密鑰可用:

    • ADB 供應商密鑰和驅動程序對於 DUT 必須是唯一的。
    • 要始終啟用 USB 調試,必須使用export ADB_VENDOR_KEYS=/path/to/directory/with/vendor/keys將源樹中的 ADB 供應商密鑰添加到~/.bashrc (或等效項),其中/path/to/directory是您在主機上的完全限定路徑。有關 ADB 故障排除,請參閱在硬件設備上運行應用程序
  • 允許 USB 調試:安裝 adb 驅動程序後,adb devices 可能會在設備上觸發提示以允許 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測試可以在其中運行的環境規範
(測試平台) _description評論每個測試平台,因為 ACTS 可以針對單個測試平台
(測試平台) name從命令行調用的測試台名稱
(測試平台) 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"
    },
...
}

您可以在System > About phone下從設備中提取電話號碼。 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 # (測試迭代) 添加到命令中。