2016-03-31 73 views
4

任何人都可以解釋什麼是在android意味着完成測試分片? 如果有人可以分享任何教程將是非常有用的。Android測試分片

詞碎片意味着整體的一小部分。 sharding是如何基於一個數字執行的,我應該在什麼基礎上指定shardIndex?

在開發人員文檔中定義。

測試分片

測試運行器支持將單個測試套件爲多個 碎片,這樣你就可以輕鬆地運行屬於同一碎片 一起爲一組的測試中,相同的儀表實例下。每個 分片由索引號標識。在運行測試時,使用-e numShards選項指定要創建 的單獨分片的數量,使用-e shardIndex選項指定要運行的分片。

例如,爲了測試套件分成10個碎片和只運行 測試在所述第二分片分組,使用下面的命令:

adb shell am instrument -w -e numShards 10 -e shardIndex 2

回答

6

測試分片允許你均分把你的測試分成幾組。分片索引是您正在運行的「百分比」組。分組的分組方式是隨意的,因爲分片的要點是並行化測試。

例如,假設您有60個測試運行,每個測試需要1分鐘才能完成。如果您要在單個設備上運行此操作,則需要一個小時才能運行所有測試。現在我們可以說,您希望通過在一臺設備上運行一半的測試並在另一臺設備上同時運行另一半的測試來加速測試,因此總共只需要30分鐘。

您可以通過並行運行以下ADB命令來完成此操作。

adb -s DEVICE_1_SERIAL shell am instrument -w -e numShards 2 -e shardIndex 0 > device_1_results // Runs first half of the tests 
adb -s DEVICE_2_SERIAL shell am instrument -w -e numShards 2 -e shardIndex 1 > device_2_results // Runs second half of the tests 

現在已經由平均分配負荷,兩臺設備運行在只有30分鐘的所有60次測試,現在可以處理結果。

有關它是如何工作的細節問題,看看ShardingFilter內 https://android.googlesource.com/platform/frameworks/testing/+/2fe8aed7542ee05ce504d69656475d1948e9c5b2/androidtestlib/src/com/android/test/runner/TestRequestBuilder.java