ACTS 电话测试

Android 通讯测试套件 (ACTS) 可以对连接堆栈(例如 Wi-Fi、蓝牙和移动网络服务)自动进行测试。该测试工具需要 adb 和 Python,您可以在以下位置找到该工具:tools/test/connectivity/acts

本页将介绍如何为拥有两部手机的用户运行 Android 开源项目 (AOSP) 中提供的基本电话测试。

前提条件

如需运行 ACTS 电话测试,您应该有权访问完整的 Android 代码库,并在要测试的设备上安装 userdebug build。

下载 Android 代码库

按照下载源代码中的说明,在通过 USB 与您要测试的设备相连接的设备上下载 Android 代码库。

  • AOSP 代码库的大小达到好几个 G,并且仍在继续扩大,预计下载时间会因此而异。
    • 如果设备大小有限,请在 repo init 命令中添加 --depth=1
  • 如需在未来获取有关 ACTS 工具的更新,请转到 Android 根目录:
    • 使用 repo sync tools/test/connectivity
    • repo sync external/sl4a

在设备上验证 userdebug build

在测试设备上安装 userdebug 版本的 Android。

  • 按照构建 Android 中的说明构建代码库。
  • 按照刷写设备中所述刷写设备。
    • 命令 adb shell getprop ro.build.type 应返回 userdebug
    • 如果无法使用 ro.build.type,userdebug build 允许以 root 身份运行 adb shell(终端 #)。

构建并安装 SL4A

如需构建并安装 Android 脚本层 (SL4A),请按照 Android 脚本层中的说明操作。“将 SL4A build 默认添加到 Android build”部分的操作可选。

构建 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(其中 /path/to/directory 是主机上的完全限定路径)将源代码树中的 adb 供应商密钥添加到 ~/.bashrc(或等效项)中。如需了解如何排查 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 能够以各个测试平台为目标
(testbed) name 从命令行调用测试平台时使用的测试平台名称
(testbed) AndroidDevice 作为测试对象的具体设备的列表
注意:可能会列出多台设备。手机通话测试要求有两台设备,如果设备数量少于两台,测试就会失败。如果列出了两台设备而测试只需一台设备,则该测试会在第一台设备上运行。
(testbed)(AndroidDevice) serial 设备的序列号(由 adb devices 输出)
(testbed)(AndroidDevice) adb_logcat_param 在测试期间调用 adb logcat 时传递的参数
logpath 测试服务器上的日志保存位置
testpaths 测试用例代码的位置
sim_conf_file 列出可用 SIM 卡的 .json 文件的位置
SIM 卡列表的内容包括 SIM 卡 ID、SIM 卡功能、运营商和电话号码。
{
    "sim-card-ID-here": {
        "capability": [
            "voice",
            "ims",
            "volte",
            "vt",
            "sms",
            "tethering",
            "data"
        ],
        "operator": "tmo",
        "phone_num": "12345678901"
    },
...
}

您可以在设备上依次转到系统 > 关于手机,获取电话号码。SIM 卡 ID 通常印在 SIM 卡上,也可以在设备上依次转到系统 > 关于手机 > SIM 卡状态,获取 SIM 卡 ID。运营商字符串是在 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 #(测试迭代)。