Android Test Station是一个测试工具,Android开发人员和测试工程师可以使用它来使用用户界面来运行标准的Android测试套件,例如Android兼容性测试套件(CTS) 。该工具充当贸易联合会(TF)的Web界面,使您可以通过最少的设置轻松地在一组测试设备上运行CTS,并建立连续运行测试的时间表。
本节说明如何安装和设置Android Test Station。
Android Test Station使用以下位置的源代码:
注意:此处提供的链接是建议在Ubuntu Linux计算机上安装的。该工具可以在其他操作系统上运行,但是可能需要针对每个需求使用不同的步骤。
遵循要运行的测试套件的所有硬件和软件要求。
CTS的要求可在source.android.com上找到。
没有其他硬件要求,但是我们建议使用一台具有100 GB可用硬盘空间和8 GB内存的计算机,该计算机足以存储测试套件多次运行的输出文件。
有两种安装Android Test Station的方法:
使用安装程序进行安装
在Ubuntu 18.04+上,安装程序会安装和配置运行Android Test Station所需的所有程序和资源。
要使用安装程序:
运行安装程序:
curl https://storage.googleapis.com/android-mtt.appspot.com/prod/install.sh | bash
运行mtt version
来检查已安装的Android Test Station CLI版本。
手动安装
安装Docker
按照说明在Linux机器上安装Docker Community Edition(CE) 。
请遵循安装后的步骤以非root用户身份管理Docker 。
您可能需要重新启动终端窗口或注销并重新登录,以使权限更改生效。
安装Python 3.7
Android Test Station CLI需要Python 3.7。
对于Ubuntu 16.04或更早版本,您需要通过执行以下操作之一首先添加Python 3.7的存储库:
运行以下命令:
sudo add-apt-repository ppa:deadsnakes/ppa
或从源代码构建和安装存储库
要安装Python 3.7,请运行以下命令:
sudo apt-get update
sudo apt install python3.7 python3.7-distutils
获取Android Test Station CLI
在此处下载命令行界面(CLI)软件包。
使用以下命令启动Android Test Station:
mtt start
第一次启动UI时,可能需要几分钟的时间才能显示出来。 CLI显示一个Web URL,以在浏览器中访问UI。默认情况下,Web URL为localhost:8000
。如果需要,您可以在启动时使用--port
标志更改默认端口。
如果有较新的版本,则可以更新到当前版本。您可以查看发行说明中的最新版本。
注意:如果要从R5之前的版本进行更新,请在升级之前备份数据,以便可以安全地回滚到以前的版本而不会丢失数据。请参阅备份和还原数据库以获取备份和还原说明。
要更新到当前版本,请运行:
mtt start --force_update
要停止应用程序,请运行:
mtt stop
要查看其他命令的列表,请使用:
mtt --help
要备份ATS数据库,请停止应用程序并运行以下命令,该命令将当前数据库备份到主目录中名为mtt-backup.tar
的TAR文件中:
docker run --rm --mount source=mtt-data,target=/data -v ~:/out ubuntu bash -c "cd /data && tar cvf /out/mtt-backup.tar ."
要还原,请在启动应用程序之前运行以下命令:
docker run --rm --mount source=mtt-data,target=/data -v ~:/out ubuntu bash -c "cd /data && tar xvf /out/mtt-backup.tar"
首次安装并运行Android Test Station之后,设置向导将引导您完成一些步骤,以帮助您针对您的环境自定义该工具。您在此处所做的任何更改都可以稍后通过“设置”页面重新配置。
如果您有从其他Android Test Station主机备份的配置文件,则可以通过单击“上传文件”按钮上传该文件,以复制从该主机修改的任何配置。
图1.恢复配置备份
您可以设置一个Android测试站默认在访问您的资源(例如Google Cloud Storage,Google Drive)时使用的服务帐户。要验证您的服务帐户,请单击“上载服务帐户密钥”,然后选择服务帐户的JSON密钥文件。
图2.设置服务帐户
成功验证服务帐户后,该帐户的电子邮件地址将显示在页面的右上角。要更改服务帐户,请单击帐户名称,删除当前的默认帐户,然后上载新的服务帐户密钥。
图3.更改服务帐户
配置集是用于运行测试套件的配置包,包括相关的设备操作,构建通道等。配置集托管在特定的Google Cloud Storage(GCS)存储桶中。用您的Google帐户验证GCS构建渠道后,您会看到所有可用配置集的列表。
注意:当前没有公开可用的配置集,因此对于某些用户,此列表可能为空。
某些CTS测试要求您的设备连接到Wi-Fi热点。要选择您的Wi-Fi网络,请输入WiFi SSID和可选的WiFi PSK 。
图5. Wi-Fi热点设置
完成安装向导后,页面将重新加载并应用新设置。
必须启用USB调试才能使用设备进行测试。要启用调试:
请遵循“启用开发人员选项和调试”中的说明。
如果您打算使用预加载了自定义ADB密钥的测试Android版本,请将自定义.adb_key
文件放在~/.android/
目录下。
在为运行那些构建的设备刷新设备后,文件会自动加载并传递到ADB以自动启用USB调试。
注意:要将自定义ADB密钥添加到您的Android可调试版本中,请参见添加PRODUCT_ADB_KEYS的更改。
使用USB将设备连接到主机。
刷新Web界面后一分钟内,该设备将出现在Android Test Station的“设备”标签中。您也可以在此选项卡上查看设备的状态。
图6.连接设备
不同的设备状态为:
重要提示:连接设备后,请勿在Android Test Station外部的终端中使用ADB。该应用程序与Android Test Station ADB实例冲突,并导致设备与其断开连接。
Android Test Station随附了一组预捆绑的CTS配置。要运行这些测试之一,请转到“测试套件”选项卡,然后单击“运行测试”以找到所需的测试。图7.选择一个测试
要编辑或添加新测试,请参阅添加测试。
编辑用于此特定测试运行的参数。大多数参数已预填充所选测试配置中定义的值。
可以使用默认值完成此步骤,但是您可以更改任何参数(例如Max Retry和Command )以适合您的需求。
注意:此处所做的任何更改仅影响此测试运行,而不更改已保存的测试配置。要更改测试配置,请参阅“编辑测试” 。
测试运行参数为:
名称-您要运行的测试套件的名称。
运行次数-安排此测试运行应执行的次数。使用Trade Federation计划测试运行,如果有能力的话,最多可以并行运行20个测试运行。
最大重试次数-如果至少一项测试失败,则重试一次测试的最大次数。对于完整的CTS运行,通常将其设置为4至6次重试,以处理不稳定的测试。
排队超时-如果测试运行在“排队”状态下停留的时间过长,则会自动取消。在此处指定取消之前要等待的时间。默认值为24小时。
命令-运行测试套件的命令。您可以在此处输入其他命令行参数。例如,使用以下命令在CTS 8.1中运行特定模块:
cts-suite -m ShortModuleName
重试命令-重试测试套件的命令。您可以在此处添加其他命令行参数。例如,要仅重试CTS 8.1中的特定模块,请使用:
cts --retry 0 -m ShortModuleName
重试参数可能与初始命令可用的参数不同,因此请在官方站点上检查所选测试套件的支持参数。
先前的测试运行-如果您希望重新运行先前的测试运行,请执行以下操作:
单击复选框以选择要分配用于运行测试套件的设备。分片计数应自动更改以匹配所选设备的数量。
图11.选择设备
所有选定的设备必须处于“可用”状态才能执行测试运行,并且在执行测试运行时它们都将切换到“已分配”状态。等待设备可用时,测试运行处于“已排队”状态。
注意:要与分片一起使用,测试必须实现IShardableTest接口,否则它们将在调用时失败。当前,所有CTS和GTS测试都支持分片。
设备操作是可以在每次测试运行之前执行的脚本。已经配置了一些设备操作,例如闪烁和重新启动。要创建新设备操作,请参阅创建新设备操作。
图12.设备动作
要将设备操作添加到测试运行中,请单击添加新操作,选择要添加的操作的复选框,然后单击添加操作。设备操作按顺序执行。您可以通过拖动动作来重新排列动作。
图13.重新排序动作
测试资源是执行测试运行所需的文件。例如,运行CTS需要一个android-cts*.zip文件,而刷新设备需要您提供构建映像。
测试套件zip文件的下载URL应该默认为提供给合作伙伴的Google云端硬盘链接。您可以通过单击浏览选择其他文件。在弹出窗口中,您可以输入文件下载链接,使用经过身份验证的构建通道中的文件,或上载文件以从本地存储中使用。
图14.测试资源
以下是用于通过Web URL选择测试资源的弹出窗口。您只需输入下载URL链接,然后单击“选择”按钮以确认选择。
图15.测试资源选择器-Web URL
如果您已将资源上传到Google Grive,Google Cloud Storage(GCS)或其他渠道,则也可以导航至特定渠道的标签并在此处选择资源。这是从Google Drive选择资源的示例。
图16.测试资源选择器-Google云端硬盘
除了选择文件外,“文件名”字段中还支持通配符。该文档可在此处找到。
注意:输入通配符后,将使用与模式匹配的最新文件来运行测试。
您还可以从Android Test Station的本地文件存储中选择一个文件。您可以将文件上传到此存储中,也可以直接使用本地文件和目录。
图18.测试资源选择器-本地文件存储
输入测试运行所需的信息后,点击开始测试运行。如果所有信息均有效,则将开始测试运行,然后将您重定向到一个页面,以查看测试运行的详细信息和进度。
图19.开始测试运行
测试计划用于定期创建测试运行。例如,每天下午5点运行CTS 9.0。要创建新的测试计划,请点击创建新的测试计划。
图20.创建一个测试计划
输入测试计划的名称以及您要添加的所有标签。然后选择要使用的时间表。
通过单击**+添加测试运行配置,添加**要由测试计划计划的测试套件。从“名称”下拉列表中选择一个测试套件,然后单击“下一步” 。然后选择要在其上运行测试的设备,然后单击“添加配置” 。您可以为每个测试计划添加多个配置。
图22.配置测试运行
在“测试运行”页面上查看计划的测试运行的列表。单击查看以查看有关测试运行的更多详细信息。
您还可以通过在过滤器栏中输入字符串并按Enter键来过滤列表。您可以使用多个过滤器,以逗号分隔。过滤器返回任何列中包含确切文本(无子字符串匹配)的所有行,但Status和Created除外。
您可以在此处查看测试运行的详细信息,例如状态,日志和结果。
图26.测试运行细节
测试运行状态
状态部分中显示了测试运行的进度。如果有相关消息,例如下载进度,取消原因或错误消息,也将在此处显示。
图27.测试运行状态
测试运行状态为:
取消测试运行
如果测试运行尚未完成,则可以通过单击“取消” ,然后在确认对话框中单击“是”来取消测试。如果测试运行在“已排队”状态的时间长于queue_timeout_seconds字段,则也会自动取消。在“运行”状态下取消测试运行可能需要几分钟才能生效。
图28.取消测试运行
测试运行结果
测试运行完成后,将收集并显示结果。您可以通过单击每次运行的箭头来查看其他详细信息。单击查看输出文件以查看收集的测试工件,例如test_result.xml
和test_result_failures.html
。
图29.测试运行结果
您可以在“日志”选项卡中查看实时主机和Tradefed日志。
图30.“日志”选项卡
各个模块的结果在“测试结果”选项卡上。
图31.“测试结果”选项卡
Android Test Station使用以YAML编写的配置文件来加载预定义的选项,例如测试,构建通道和设备操作。下面显示了一些选项的配置文件示例。
// example_file.yaml
tests:
- id : android.cts.9_0.arm
name: CTS 9.0 (ARM)
test_resource_defs:
- name: android-cts.zip
default_download_url: https://dl.google.com/dl/android/cts/android-cts-9.0_r7-linux_x86-arm.zip
test_resource_type: TEST_PACKAGE
command: cts
env_vars:
- name: TF_PATH
value: ${TF_WORK_DIR}/android-cts/tools:${TF_WORK_DIR}/android-cts/testcases
- name: LD_LIBRARY_PATH
value: ${TF_WORK_DIR}/android-cts/lib:${TF_WORK_DIR}/android-cts/lib64
setup_scripts:
output_file_patterns:
- android-cts/logs/latest/.*
- android-cts/results/latest/.*\.html
- android-cts/results/latest/compatibility_result\..*
- android-cts/results/latest/logo.png
- android-cts/results/latest/test_result.xml
result_file: test_result.xml
java_properties:
- name: CTS_ROOT
value: ${TF_WORK_DIR}
context_file_dir: android-cts/results/
context_file_pattern: '[\d_\.]+\.zip'
retry_command_line: retry --retry 0
runner_sharding_args: --shard-count ${TF_SHARD_COUNT}
build_channels:
- id: google_drive
name: Google Drive
provider_name: Google Drive
device_actions:
- id: flash
name: Flash
test_resource_defs:
- name: bootloader.img
test_resource_type: DEVICE_IMAGE
- name: radio.img
test_resource_type: DEVICE_IMAGE
- name: img.zip
test_resource_type: DEVICE_IMAGE
tradefed_target_preparers:
- class_name: com.android.tradefed.targetprep.RunHostCommandTargetPreparer
option_values:
- name: work-dir
values:
- ${TF_WORK_DIR}
- name: host-setup-command
values:
- adb -s $SERIAL reboot-bootloader
- fastboot -s $SERIAL flash bootloader bootloader.img
- fastboot -s $SERIAL flash radio radio.img
- fastboot -s $SERIAL reboot-bootloader
- fastboot -s $SERIAL -w update img.zip
- adb -s $SERIAL wait-for-device
- name: host-cmd-timeout
values:
- 10m
设置Android Test Station实例时,可以通过将其导出为文件与其他用户共享配置。为此,请转到“设置”页面,然后单击右上角的“导出”。
图34.配置文件管理
下载配置文件后,与其他用户共享文件。他们可以通过单击导入并选择配置文件,将配置文件添加到其Android Test Station实例。
设备操作用于自动执行设备设置过程。操作是在每次测试运行之前(包括重试之前)在要运行测试的每个设备上执行的脚本。要查看可用设备操作的列表,请转到“设置”页面,然后单击“设备操作”选项卡。已经配置了多个设备操作,例如重新引导和刷新。
图35.设备操作选项卡
添加新设备操作
单击添加目标准备器。
输入行业联合会目标准备者的完整类名,例如com.android.tradefed.targetprep.RunHostCommandTargetPreparer
。
可以在com.android.tradefed.targetprep参考中找到可用的目标准备器列表。
图39.目标准备者列表
添加任何与目标准备器一起使用的选项。要查看可用选项,请检查targetprep以获取AOSP中每个目标准备者的源代码:
图40.操作选项示例
要添加选项,请单击添加目标准备者选项,然后输入所需的值。
定义执行设备操作所需的测试资源,例如,构建用于刷新的映像。要添加资源定义,请单击添加测试资源,然后输入所需的文件。如果您知道文件的位置,则可以通过单击浏览提供默认的下载URL。
图42.动作测试资源
编辑测试
要编辑保存的测试,请转到“测试”页面,然后在要修改的测试行上单击“编辑”。更改测试配置后,点击更新。
图44.编辑测试
注意:要修改其中一个预先捆绑的测试,请使用添加新测试中描述的“制作副本”功能来创建一个新变体。重新启动Android Test Station时,将还原对预捆绑测试配置的任何更改。
添加新测试
要添加新测试,请转到“测试”页面,然后点击创建新测试。输入适当的信息,然后单击创建。
图45.创建一个测试
注意:要从已保存的测试中预填充数据,请转到“测试”页面,在要复制的测试行的末尾单击三个点,然后单击“复制” 。
图46.复制测试
配置主机后,可以将主机的配置导出到文件中。您可以将该文件上传到其他主机,以复制保存的配置。
从版本R11开始,可以在Android Test Station中自动访问$HOME/.ats_storage
目录中的文件。将文件复制或移动到该目录中,然后在安排测试运行时从“本地文件”选项卡中选择它。
cp /path/to/file $HOME/.ats_storage
图49.从$HOME/.ats_storage
目录中选择一个文件
您可以使用--mount_local_path
标志将其他目录装载到本地文件存储中。
mtt start --mount_local_path=/path/to/dir1 --mount_local_path=/path/to/dir2:renamed_dir2