本节介绍 Tradefed 的内部结构及其关系。有关详细信息,请参阅链接的子页面。
1. 测试配置(XML 配置)
概述
Tradefed 中的测试配置以 XML 格式描述。了解配置的结构是运行和定制测试的关键。
TF 配置的结构
全局 TF 配置
全局配置是一个特殊的 Tradefed XML 配置,在 Tradefed 启动时通过TF_GLOBAL_CONFIG
环境变量加载。它加载与将影响整体线束行为的 Tradefed 实例范围相关的对象。
密钥库
Keystore 允许从 keystore 向 Tradefed 注入命令行选项,以避免直接在命令行上引用该值。这可用于通过直接从密钥库中检索密码来隐藏命令行中的密码。
2.设备管理器
设备管理器负责跟踪正在运行的 Tradefed 实例上的设备状态。监控分配状态和在线状态等方面。
3.测试命令调度器
Tradefed 中的测试命令调度程序接受命令运行,将它们与设备关联,并启动测试调用。
4.构建提供者
Build Provider 是任何测试调用的第一步。它下载设置和运行测试所需的资源(构建映像、测试 APK 等)。它还在将传递给测试的BuildInfo
对象中引用它们。本地可用资源也可以在BuildInfo
对象中链接。
5. Target Preparer and Cleaner
Target Preparer 提供可选操作,可用于将被测目标配置为特定状态,例如刷新设备、设置特定属性和连接到 Wi-Fi。
6. 测试跑者
Tradefed 中的 Test Runner 是指负责实际测试执行的对象。不同的测试运行者以不同的方式驱动测试执行;例如,仪器测试运行程序将与 JUnit 测试运行程序非常不同。
7. 结果报告者
Tradefed 中的 Result Reporter 是指将结果发送到特定目的地的对象。每个实现通常专门针对不同的结果后端。 Result Reporter 负责将 Tradefed 结果格式转换为目标格式。
这种灵活的设计允许任何测试向任何结果目的地报告,并以隔离的方式轻松添加更多测试。
8. 指标收集器
Metrics Collector 是 Tradefed 中的一个特殊对象,与测试执行正交。它允许在测试生命周期的不同点(例如,测试开始、测试结束)收集信息。由于收集器与测试本身分离,因此可以交换、添加和删除点,而无需更改测试本身。
9. 主机范围的设置
本节介绍适用于完整 Tradefed 实例运行的设置。这些选项会影响整个线束的行为,以适应不同的环境,例如在受限网络中。
10. 附加功能
以下部分描述了 Tradefed 而不是 Tradefed 对象的一般用法。
交易分片
当测试语料库很大或需要很长时间执行时,可以将其拆分到多个设备上。我们将这种拆分称为分片。本节介绍分片的工作原理和配置方式。
使用 SL4A
Tradefed 支持安卓脚本层,SL4A;这是一个自动化工具集,用于以独立于平台的方式调用 Android API。
动态@Option 下载
在某些情况下,测试或某些特定操作所需的文件在本地不可用。此功能允许 Tradefed 从远程位置获取这些文件,而无需通过 Build Provider。