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
注意:请为每种类型的被测设备 (DUT) 构建不同的 sl4a.apk 实例。注意:为了最大限度地提高稳定性,构建 sl4a.apk 所用的代码库和版本应与刷机前的 DUT 相同。如果收到错误消息,其中包含“Error in RPC”字样,则表明 SL4A 与操作系统之间可能不匹配。
配置要测试的设备
按照以下 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 /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 /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_conf_file 的文件随意命名,只要名称采用 JSON 格式即可。在移动网络运营商不允许使用 Android API 查询电话号码的情况下,这是一种后备方案。下面是一个示例。{
"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/framework/acts/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注意:在上面的 -tc 上,TelLiveVoiceTest 是测试文件,:test_call_mo_voice_general 是该文件中的具体测试用例。如需运行文件中的所有测试,请只调用 -tc TelLiveVoiceTest。TelLiveVoiceTest 包含许多运行时间较长的测试用例,不建议运行该文件中的所有测试。
成功运行测试的最终输出消息应如下所示:
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
#(测试迭代)。