設定區塊

本頁面說明如何透過分片調整套件模組 (AndroidTest.xml),在實驗室中持續執行時獲得最佳速度效能。我們會盡量以一般方式說明各個選項,並說明使用各選項的理由。

在實驗室中持續執行套件時,套件通常會分散到多部裝置上,以縮短整體完成時間。測試架構通常會嘗試平衡每個分片的執行時間,盡量縮短整體完成時間 (最後一個分片完成時),但由於某些測試的性質,我們不一定有足夠的內省能力,因此需要模組擁有者調整某些行為。

是否可分片?

您可以將模組 (AndroidTest.xml) 標記為 <option name="not-shardable" value="true" />,通知架構不應將其分片。

在一般模組中,讓架構共用模組 (預設行為) 是正確的做法。但在某些情況下,您可能想覆寫該行為:

  • 模組設定費用高昂時:

對模組進行分片後,準備作業 (安裝 APK、推送檔案等) 可能會針對每個相關裝置執行一次。如果模組設定耗時費力,且與測試執行階段相比,不值得複製,請將模組標示為不可分片。

  • 如果模組中的測試數量較少:

模組分片後,所有測試案例可能會在不同裝置上獨立執行。這與第一點有關;如果測試數量較少,您可能會在某些分片中只進行一項測試或沒有任何測試,這會使任何準備步驟都相當昂貴。舉例來說,為單一測試案例安裝 APK 通常不值得。

檢測設備測試:最多可分割多少個分片?

透過 AndroidJUnitTest 執行的檢測設備測試,不會向架構公開檢測設備包含的測試數量,直到我們實際安裝並執行 APK 為止。這些作業成本高昂,且無法在套件所有模組的分片時間執行。

測試架構可能會過度分片檢測設備測試,導致部分分片為空;在六個分片中分片五項測試的檢測設備測試,會產生五個分片 (各有一項測試),以及一個沒有測試的分片。每個分片都需要安裝 APK,成本高昂。

因此,如果檢測設備測試 APK 中的測試數量較少,標記 <option name="not-shardable" value="true" /> 模組可讓架構瞭解不值得對該模組進行分片。

AndroidJUnitTest 執行器提供特殊選項,可指定允許分片的最多分片數:<option name="ajur-max-shard" value="5" />

這項功能可讓您指定可分片的插碼次數上限,無論在叫用層級要求的分片數為何。根據預設,檢測結果會分片,分片數量等於調用要求的分片數量。

舉例來說,如果您的插樁測試 APK 只包含兩個測試案例,但您仍想將其分片,將 ajur-max-shard 值設為 2 可確保您不會建立空白分片。