Tradefed 架构

本节介绍 Tradefed 的内部结构及其相互关系。如需了解更多详情,请参阅链接的子页面。

测试配置

Tradefed 中的测试配置以 XML 格式描述。了解配置的结构是运行和自定义测试的关键。

TF 配置的结构

全局 TF 配置

全局配置文件是一种特殊的 Tradefed XML 配置,当 Tradefed 通过 TF_GLOBAL_CONFIG 环境变量启动时加载。它加载与 Tradefed 实例范围相关的对象,这些对象将影响整个 harness 行为。

全局配置详情

密钥库

密钥库允许将命令行选项从密钥库注入到 Tradefed,以避免直接在命令行上引用该值。这可用于通过直接从密钥库检索密码来隐藏命令行中的密码。

密钥库详情

设备管理器

设备管理器负责跟踪 Tradefed 运行实例上的设备状态。它会监控分配状态和在线状态等方面。

测试命令调度器

Tradefed 中的测试命令调度器接收要运行的命令,将其与设备关联,然后启动测试调用。

Build 提供程序

Build 提供程序是任何测试调用的第一步。它会下载设置和运行测试所需的资源(build 镜像、测试 APK 等)。它还在将传递给测试的 BuildInfo 对象中引用这些资源。本地可用的资源也可以链接到 BuildInfo 对象中。

目标准备器和清理器

目标准备器提供可选择的操作,这些操作可以用来将被测目标配置成某种状态,例如刷写设备、设置某些属性以及连接到 Wi-Fi。

测试运行程序

Tradefed 中的测试运行程序是指负责实际测试执行的对象。不同的测试运行程序以不同的方式驱动测试执行;例如,Instrumentation 测试运行程序与 JUnit 测试运行程序非常不同。

结果报告器

Tradefed 中的结果报告器是指将结果发送到特定目标的对象。每个实现通常针对不同的结果后端进行了专门化。结果报告器负责将 Tradefed 结果格式转换为目标格式。

这种灵活的设计允许任何测试报告给任何结果目标,并且可以轻松地以隔离的方式添加更多测试。

指标收集器

指标收集器是 Tradefed 中的一个特殊对象,与测试执行无关。它允许在测试生命周期的不同点(例如,测试开始、测试结束)收集信息。由于收集器与测试本身分离,因此可以交换、添加和删除这些点,而无需更改测试本身。

主机范围设置

本节介绍适用于完整 Tradefed 实例运行的设置。这些选项会影响 harness 的整体行为,以便适应不同的环境,例如处于受限网络中。

附加功能

以下各节介绍 Tradefed 的一般用法,而不是 Tradefed 对象。

Tradefed 分片

当测试语料库很大或执行时间很长时,可以将其拆分到多个设备上。我们将这种拆分称为分片。本节介绍分片的工作原理以及如何配置分片。

分片详情

使用 SL4A

Tradefed 支持 Android 的脚本层 SL4A;这是一种用于以平台无关的方式调用 Android API 的自动化工具集。

SL4A 与 Tradefed 详情

动态 @option 下载

在某些情况下,测试或某些特定操作所需的文件在本地不可用。此功能允许 Tradefed 从远程位置获取这些文件,而无需通过 Build 提供程序。

动态 @option 下载