測試分割

如果測試集合很大或執行時間變長,我們可能會將測試分割至多部裝置:分割

分割作業有先決條件,測試執行程式才能支援分割作業。

大多數的主要測試執行器均已支援資料分割,因此沒有額外的 執行不同工作這些功能已支援分割:檢測設備測試、主機端驅動測試、GTest。

我們支援交易有兩種資料分割類型:本地和分散式。 這些範例都有一些相似之處,因此本頁面將說明 然後具體細節

常見屬性

兩種切割形式都會假設測試執行程式具有相同的屬性:切割片段必須是「獨立」和「確定性」。兩種分割作業的第一步驟,都是建立完整的測試順序清單,然後將其分割為不同的群組/分割區。

資料分割表單的主要差異在於執行測試的方式。 詳情請參閱以下各節。

本機區塊劃分

本機區塊是指執行區塊呼叫時,所有相關裝置都連接到同一個實體主機。

執行

本機區隔功能會利用連線至相同主機的所有裝置,建立需要執行的測試集區,並在每部裝置空閒時 (也就是完成先前測試) 進行輪詢測試。這樣才能達到最佳裝置使用率。我們也稱之為動態分割

選項

--shard-count XX

分散式資料分割

「分散式區塊劃分」是指執行區塊劃分叫用作業的所有裝置都可以位於任何位置,並連線至不同的實體主機。

執行

建構測試清單和 每個資料分割都只會執行目前要求的資料分割。因此,所有分散式區塊一開始都會建立相同的清單,然後執行其中互斥的子集,進而執行所有測試。

此表單的主要屬性是,每個分片都完全不瞭解彼此,且可能會個別失敗。

主要缺點是,我們無法預先預測每個區塊中每個測試的執行時間,因此區塊長度不一定平衡。發行版本的測試案例數量大致相同 每個資料分割中的值

選項

--shard-count XX --shard-index XX

權杖資料分割

符記區塊只能搭配本機區塊使用。旗標是 無法在非本機資料分割使用案例中運作。有時只有一部裝置 涉及資料分割的特殊資源,例如 SIM 卡等 資訊卡部分測試可能只有在該特殊資源可用時才會運作,否則會失敗。

權杖資料分割是這個用途的解決方案。測試模組 在 AndroidTest.xml 中宣告需要哪些特殊資源;以及 交易完成後,測試會將測試轉送至有資源的裝置。

XML 設定

<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />

權杖的 value 會與 Tradefed 的 TokenProperty 相符,並與 TokenProviderHelper 中的處理程序建立關聯。

這樣一來,您就能針對可正確執行測試的裝置執行測試模組。

如果沒有裝置可以執行測試,該怎麼辦?

如果沒有任何可用的裝置具有與測試模組相符的資源,則測試模組會因無法正常執行而失敗並略過。

舉例來說,如果測試模組要求使用 SIM 卡執行,但沒有任何裝置有 SIM 卡,則測試模組會失敗。

實作

將此功能旗標傳遞至主要的 Tradefed 指令列:

--enable-token-sharding