Sharding konfigurieren

Diese Seite beschreibt , was für eine Suite Modul (abzustimmen möglich ist AndroidTest.xml ) über sharding und die beste Geschwindigkeitsleistung während der kontinuierlichen Durchführung im Labor. Wir werden versuchen, die Optionen in einer generischen Weise mit der Begründung für ihre Verwendung zu beschreiben.

Wenn eine Suite im Labor kontinuierlich ausgeführt wird, wird die Suite normalerweise auf mehrere Geräte aufgeteilt, um die Gesamtbearbeitungszeit zu verkürzen. Der Harness versucht normalerweise, die Ausführungszeit jedes Shards auszugleichen, um die Gesamtfertigstellungszeit (wenn der letzte Shard beendet ist) zu minimieren. aber aufgrund der Natur einiger Tests haben wir nicht immer genug Selbstbeobachtung und brauchen den Modulbesitzer, um ein gewisses Verhalten zu optimieren.

Shardable oder nicht Shardable?

Es ist möglich , ein Modul (markieren AndroidTest.xml ) mit <option name="not-shardable" value="true" /> das Geschirr benachrichtigen , dass es nicht sharded werden sollte.

In einem typischen Modul ist es richtig, den Kabelbaum Ihr Modul zersplittern zu lassen (das Standardverhalten). In einigen Fällen möchten Sie dieses Verhalten jedoch möglicherweise überschreiben:

  • Wenn die Einrichtung Ihres Moduls teuer ist:

Das Sharing eines Moduls führt dazu, dass die Vorbereitung (APK installieren, Datei pushen etc.) evtl. einmal pro beteiligtem Gerät ausgeführt wird. Wenn Ihr Modul-Setup lang und teuer ist und es sich im Vergleich zur Laufzeit des Tests nicht lohnt, repliziert zu werden, sollten Sie Ihr Modul als nicht teilbar kennzeichnen.

  • Wenn die Anzahl der Tests in Ihrem Modul gering ist:

Das Sharing eines Moduls führt dazu, dass alle Testfälle möglicherweise unabhängig voneinander auf verschiedenen Geräten ausgeführt werden. Dies bezieht sich auf den ersten Punkt; Wenn die Anzahl der Tests gering ist, kann es sein, dass Sie in einigen Shards einen einzelnen Test oder keinen Test haben, was jeden Vorbereitungsschritt ziemlich teuer machen würde. Die Installation einer APK für einen einzelnen Testfall lohnt sich beispielsweise in der Regel nicht.

Instrumentierungstests: Maximale Anzahl von Shards?

Ein Instrumententest läuft durch AndroidJUnitTest aussetzt nicht am Gurtzeug wie viele Tests Teil der Instrumentierung ist , bis wir die APK tatsächlich installieren und ausführen. Diese Vorgänge sind kostspielig und können nicht für alle Module der Suite zur Sharding-Zeit ausgeführt werden.

Der Kabelbaum könnte den Instrumentierungstest überbeanspruchen und mit einigen leeren Scherben enden; Das Sharding eines Gerätetests mit fünf Tests in sechs Shards führt zu fünf Shards mit einem Test und einem Shard ohne Tests. Jeder dieser Shards würde eine kostspielige APK-Installation erfordern.

Also , wenn die Anzahl der Tests in der Instrumentierung Test APK ist gering, Tagging das Modul mit <option name="not-shardable" value="true" /> erlauben würde , das Geschirr zu wissen , dass Modul Sharding ist es nicht wert.

Die AndroidJUnitTest Läufer hat eine spezielle Option erlaubt es die maximale Anzahl von Scherben zu geben , es zu Shard erlaubt in: <option name="ajur-max-shard" value="5" /> .

Auf diese Weise können Sie eine maximale Anzahl von Shards für die Instrumentierung angeben, unabhängig von der Anzahl der auf Aufrufebene angeforderten Shards. Standardmäßig wird die Instrumentierung in die Anzahl der für den Aufruf angeforderten Shards aufgeteilt.

Zum Beispiel, wenn Ihr Instrumentierung Test APK enthält nur zwei Testfälle , aber Sie wollen immer noch , es Scherbe, einen mit ajur-max-shard - Wert von 2 Sie erstellen nicht leer Scherben würden sicherstellen.