Fuchsia 测试输出格式

本文档介绍了用于收集和存储在 Fuchsia 上运行的测试的结果及输出的目录格式。目前,当指定 --output-directory 选项时,ffx 测试运行会输出该参数。

背景

单次执行 ffx test 会产生一次测试运行。“测试运行”由任意数量的“套件运行”组成,每个套件运行由任意数量的“测试用例”组成。

“套件运行”是指对测试组件的执行。测试组件最常通过其网址标识,例如 fuchsia-pkg://fuchsia.com/run_test_suite_integration_tests#meta/passing-test-example.cm

测试用例是指对套件中包含的单个测试用例执行。

此外,测试运行、套件或测试用例可能会生成工件。其中包括测试的输出,例如 stdout、stderr 和 syslog。工件可以是文件,也可以是目录。

概览

测试输出存储为目录。该目录包含单个测试运行的结果以及其中包含的任何套件运行作业和测试用例。目录的根目录包含一个名为 run_summary.json 的 JSON 文件和任意数量的子目录。每个子目录都包含用于测试运行或单个套件运行或测试用例的工件。

目录布局

JSON 文件始终名为 run_summary.json,并且始终位于目录的根目录下。run_summary.json 包含整体测试运行、测试运行中的套件运行以及每次套件运行中的测试用例的完整集。它还包含每个工件子目录的名称及其中的工件列表。工件始终位于工件子目录的顶层。

架构中的子目录和工件的名称并未指定。而是在 run_summary.json 中列出子目录和工件的实际名称。

run_summary.json 项内容

fuchsia.dev 上发布了 run_summary.json 的确切架构。在 Fuchsia 源代码中,您可以在 //sdk/schema 目录下找到该架构。

工件

工件可以包含单个文件或目录。目前存在以下工件,并且该工件是已知的。

类型 说明
系统日志 从测试套件中运行的所有组件收集的 Syslog。
受限日志 导致测试失败的任何高严重级别的日志。
STDOUT 从测试中的单个组件收集的 stdout。
STDERR 从测试中的单个组件收集到的 stderr。
报告 ffx 测试生成的 stdout 输出的副本。
CUSTOM 测试中的组件生成的一组任意文件。

解析

需要处理测试结果的工具应首先解析 run_summary.json,因为这是输出目录中唯一具有在架构中定义的位置的部分。目录的其余内容由 run_summary.json 描述。工具不应假定输出中的工件或子目录的任何特定命名惯例。

示例

此示例输出是通过对示例测试运行 ffx test 生成的。

$ ffx test run --output-directory /tmp/ffx-out fuchsia-pkg://fuchsia.com/stdout-test#meta/stdout-test.cm

examples/testing 中提供了 ffx test 生成的 /tmp/ffx-out 目录的内容。

RFC-0163:RFC 建议此输出。