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 項內容

run_summary.json 的確切結構定義會發布到 fuchsia.dev。如果是 Fuchsia 來源,則可以在 //sdk/schema 目錄下找到)。

成果

成果可能包含單一檔案或目錄。下列構件現存於配置中。

類型 說明
系統記錄檔 從測試套件中執行的所有元件收集的系統記錄檔。
限制 導致測試失敗的任何高嚴重性記錄。
一般 從測試中單一元件收集的 stdout 資料
STDERR 從測試中的單一元件收集的 stderr。
回報 ffx 測試產生的 stdout 輸出副本。
自訂 在測試中元件產生的一組任意檔案。

剖析

需要處理測試結果的工具應先剖析 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

ffx test 產生的 /tmp/ffx-out 目錄內容提供範例/測試

RFC-0163:RFC 會建議此內容。