Trade Federation 架构概览

本部分介绍 Tradefed 的内部构件以及这些构件的关系。如需了解详情,请参阅链接的子页面。

1. 测试配置(XML 配置)

概览

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

TF 配置的结构

全局 TF 配置

全局配置是一种特殊的 Tradefed XML 配置,在 Tradefed 通过 TF_GLOBAL_CONFIG 环境变量启动时加载。它会加载与 Tradefed 实例范围相关的对象,这些对象将影响自动化测试框架的整体行为。

全局配置详情

密钥库

密钥库允许将来自某个密钥库的命令行选项注入 Tradefed,以避免直接在命令行上引用相应值。这可用于在命令行中隐藏密码,方法是直接从密钥库检索密码。

密钥库详情

2. 设备管理器

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

3. 测试命令调度程序

Tradefed 中的测试命令调度程序接受要运行的命令、将这些命令与设备关联,并启动测试调用。

4. 版本提供程序

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

5. 目标准备器和清理器

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

6. 测试运行程序

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

7. 结果报告程序

Tradefed 中的结果报告程序是指会将结果发送到特定目的地的对象。每个实现通常专用于不同的结果后端。结果报告程序负责将 Tradefed 结果格式转换为目标格式。

借助这种灵活的设计,任何测试都能向任何结果目标报告结果,而且还能以隔离的方式轻松添加更多测试。

8. 指标收集器

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

9. 主机范围的设置

本部分介绍适用于完整 Tradefed 实例运行的设置。这些选项会影响整个自动化测试框架的行为,以便适应不同的环境,例如在受限网络中。


10. 其他功能

下面几部分介绍 Tradefed 而非 Tradefed 对象的一般用法。

Tradefed 分片

如果测试语料库很大或执行需要很长时间,可以将其拆分到多部设备上。我们将这种拆分称为“分片”。本部分介绍分片的工作原理及其配置方式。

分片详情

使用 SL4A

Tradefed 支持 Android 的脚本层,即 SL4A;这是一个自动化工具集,用于以独立于平台的方式调用 Android API。

SL4A 与 Tradefed 配合使用详情

动态 @Option 下载

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

动态 @option 下载