設定區塊

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

在實驗室中持續執行套件時,套件通常會在多部裝置上分割,以縮短整體完成時間。通常,測試套件會嘗試平衡各個分割區的執行時間,以便縮短整體完成時間 (當最後一個分割區完成時);但由於某些測試的特性,我們不一定有足夠的內省功能,因此需要模組擁有者調整某些行為。

是否可分割?

您可以使用 <option name="not-shardable" value="true" /> 標記模組 (AndroidTest.xml),通知系統不應分割該模組。

在一般模組中,讓控制台分割模組 (預設行為) 是正確的做法。但在某些情況下,您可能需要覆寫該行為:

  • 如果模組的設定費用高昂:

分割模組的結果是,每個相關裝置可能會執行一次準備作業 (安裝 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,即可確保不會建立空白分割區。