使用 Trade Federation 执行的测试的生命周期由四个独立的阶段组成,这些阶段围绕正式定义的接口设计。
已定义的接口
- Build Provider:提供要测试的版本,并在必要时下载相应的文件。
- Target Preparer:准备测试环境,可能包括软件安装和设备配置。
- Test:执行测试并收集测试结果。这可以是任何 JUnit 测试,但我们的 IRemoteTest 接口专门设计用于在 Trade Federation 环境中良好运行。
- Test Invocation Listener(结果报告):监听测试结果,通常用于将测试结果转发到存储库或将其显示给 Test Runner。
TF 中的基本测试实体是配置(config)。配置是一个 XML 文件,用于声明测试的生命周期组件。
测试生命周期的这种分离旨在实现重用。使用此设计,开发者可以创建一次测试,然后集成商可以创建不同的配置以在不同的环境中运行该测试。例如,他们可以创建一个配置,该配置将在本地计算机上运行测试并将结果转储到 stdout。然后,他们可以创建第二个配置,该配置将执行相同的测试,但使用不同的 Test Invocation Listener 将测试结果存储在数据库中。第三个配置可能旨在从某处的测试实验室连续运行该测试。
在此处方便地注意到,配置及其命令行参数(由 Test Runner 提供)称为命令。当 TF 将命令与 ITestDevice
配对并执行它时,后续对象称为调用。简而言之,调用涵盖了完整的 TF 测试执行,贯穿其整个生命周期。
其他配置组件
- Device Recovery:在设备通信丢失时恢复设备通信的机制。
- Logger:收集 tradefed 日志记录数据。
阶段输出和错误
调用的每个阶段按顺序执行,并且具有特定的目标。本节介绍每个阶段的常用输出和错误。
Build provider
此阶段创建并输出一个 IBuildInfo
对象,其中包含设置和运行测试所需的所有文件引用。
此阶段最常见的错误是无法下载或找到请求的文件。
此阶段的错误会导致直接报告错误,并且不运行任何测试。
目标准备
此阶段设置被测目标的必要状态。此阶段可以根据给定的测试调用更改设备或主机设置。
此阶段的常见错误通常包括无法将设备设置为给定状态(例如,刷写失败)以及无法找到设置所需的文件。
此阶段的错误会导致运行目标清理、报告错误,并且不运行任何测试。
测试
此阶段在先前准备的目标上运行请求的测试,并报告所有测试执行结果。
此阶段的常见错误通常包括被测目标不可用或某些错误导致测试部分执行。这些错误是影响测试执行本身的基础架构问题,而不是单个测试用例失败。
此阶段的错误会导致测试执行停止、运行目标清理、报告错误以及获取部分结果。
结果报告
此阶段将结果和错误报告给配置的服务(例如,服务器和本地文件)。
虽然各个结果报告器可能会出现错误,但它们彼此隔离(一个报告器看不到来自另一个报告器的错误)。这些错误仅影响单个报告器自己的结果报告,并且可以在日志中查看错误。