Android 通讯测试套件 (ACTS) 可以对连接堆栈(例如 Wi-Fi、蓝牙和移动网络服务)自动进行测试。该测试工具需要使用 adb 和 Python。该工具位于 tools/test/connectivity/acts
中。
本页将介绍如何为拥有两部手机的用户运行 Android 开源项目 (AOSP) 中提供的基本电话测试。
前提条件
如需运行 ACTS 电话测试,您应该有权访问完整的 Android 代码库,并在要测试的设备上安装 userdebug build。
下载 Android 代码库
按照下载源代码中的说明,将 Android 代码库下载到通过 USB 与您要测试的设备相连接的设备上。
- 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.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
#
(测试迭代)。