設定資料分割

本頁說明如何透過分割,為套件模組 (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 可確保不會建立空白資料分割。