2016-03-31 2 views
4

Kann jemand erklären, was Test Sharding in Androiden bedeutet zu erreichen? Und wenn jemand ein Tutorial teilen könnte, wäre es sehr hilfreich.Android Test Sharding

Das Wort Shard bedeutet einen kleinen Teil eines Ganzen. Wie erfolgt das Sharding nur anhand einer Nummer und auf welcher Basis sollte ich shardIndex angeben?

Definition wie in Entwickler-Dokumentation.

-Test sharding

Der Test Runner unterstützt eine einzelne Testsuite in mehr Scherben spalten, so dass Sie Tests, die zu der gleichen Scherbe leicht ausführen können als Gruppe zusammen, unter der gleichen Besetzung Instanz . Jeder Shard wird durch eine Indexnummer identifiziert. Verwenden Sie bei Tests die Option -e numShards, um die Anzahl der separaten Shards anzugeben, die erstellt werden sollen, und und die Option -e shardIndex, um anzugeben, welcher Shard ausgeführt werden soll.

Zum Beispiel die Testsuite in 10 Scherben spalten und nur die Tests gruppiert in der zweiten Scherbe, verwenden Sie den folgenden Befehl ausführen:

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

Antwort

6

Test-sharding können Sie teilen gleichmäßig up Ihre Tests in Gruppen. Der Shard-Index gibt an, welche Gruppe "Prozent" Sie ausführen. Wie die Gruppen aufgeteilt werden, ist willkürlich, da der Punkt des Shardings darin besteht, Ihre Tests zu parallelisieren.

Nehmen wir an, Sie haben zum Beispiel 60 Tests und jeder Test dauert 1 Minute. Wenn Sie dies auf einem einzigen Gerät ausführen würden, würde es eine Stunde dauern, alle Tests durchzuführen. Nehmen wir an, Sie möchten Ihre Tests beschleunigen, indem Sie die Hälfte der Tests auf einem Gerät und die andere Hälfte auf einem anderen Gerät gleichzeitig durchführen und so insgesamt nur 30 Minuten benötigen.

Sie können dies tun, indem Sie die folgenden ADB-Befehle parallel ausführen.

Sie haben nun alle 60 Tests in nur 30 Minuten durchgeführt, indem Sie die Last gleichmäßig auf zwei Geräte verteilt haben und die Ergebnisse nun verarbeiten können.

Für die Nitty Gritty, wie es funktioniert, sehen Sie die ShardingFilter innerhalb von https://android.googlesource.com/platform/frameworks/testing/+/2fe8aed7542ee05ce504d69656475d1948e9c5b2/androidtestlib/src/com/android/test/runner/TestRequestBuilder.java