Parçalamayı Yapılandır

Bu sayfada, parçalama yoluyla bir paket modülünü ( AndroidTest.xml ) ayarlamanın ve laboratuvarda sürekli yürütme sırasında en iyi hız performansını elde etmenin nelerin mümkün olduğu açıklanmaktadır. Seçenekleri, her birinin mantıklı bir şekilde kullanılmasıyla birlikte genel bir şekilde tanımlamaya çalışacağız.

Laboratuarda sürekli olarak bir süit çalıştırırken, genel tamamlama süresini azaltmak için süit genellikle birkaç cihaz arasında paylaştırılır. Donanım, genel tamamlama süresini (son parça bittiğinde) en aza indirmek için tipik olarak her parçanın yürütme süresini dengelemeye çalışır; ancak bazı testlerin doğası gereği, her zaman yeterli iç gözleme sahip değiliz ve modül sahibinin bazı davranışları ayarlamasına ihtiyacımız var.

Parçalanabilir mi, parçalanamaz mı?

Bir modülü ( AndroidTest.xml ) <option name="not-shardable" value="true" /> ile etiketlemek ve donanıma parçalanmaması gerektiğini bildirmek mümkündür.

Tipik bir modülde, kablo demetinin modülünüzü parçalamasına izin vermek (varsayılan davranış) yapılacak doğru şeydir. Ancak bazı durumlarda bu davranışı geçersiz kılmak isteyebilirsiniz:

  • Modülünüzün kurulumu pahalı olduğunda:

Bir modülün parçalanması, hazırlığın (APK, push dosyası vb. yükleme) muhtemelen ilgili cihaz başına bir kez çalışmasına neden olur. Modül kurulumunuz uzun ve pahalıysa ve testin çalışma zamanına kıyasla çoğaltılmaya değer değilse, modülünüzü parçalanamaz olarak etiketlemeniz gerekir.

  • Modülünüzdeki test sayısı az olduğunda:

Bir modülün parçalanması, muhtemelen farklı cihazlarda bağımsız olarak yürütülen tüm test durumlarıyla sonuçlanır. Bu birinci noktayla ilgilidir; test sayınız düşükse, bazı parçalarda tek bir test yapabilir veya hiç test yapmayabilirsiniz, bu da herhangi bir hazırlık adımını oldukça pahalı hale getirir. Örneğin, tek bir test durumu için bir APK yüklemek genellikle buna değmez.

Enstrümantasyon testleri: Maksimum parça sayısı?

AndroidJUnitTest aracılığıyla yürütülen bir enstrümantasyon testi, biz APK'yı gerçekten kurup çalıştırana kadar, kaç testin enstrümantasyonun parçası olduğunu göstermez. Bu işlemler maliyetlidir ve paketin tüm modülleri için parçalama zamanında yürütülemez.

Kablo demeti, enstrümantasyon testini aşırı derecede parçalayabilir ve bazı boş parçalarla sonuçlanabilir; altı parçada beş test içeren bir enstrümantasyon testini parçalamak, bir testte beş parça ve testsiz bir parça ile sonuçlanır. Bu parçaların her biri, maliyetli bir APK yüklemesi gerektirir.

Bu nedenle, enstrümantasyon testi APK'sındaki test sayısı düşük olduğunda, modülü <option name="not-shardable" value="true" /> ile etiketlemek, kablo demetinin o modülün parçalanmasının buna değmediğini anlamasını sağlar.

AndroidJUnitTest çalıştırıcısının, parçalanmasına izin verilen maksimum parça sayısını belirtmesine izin veren özel bir seçeneği vardır: <option name="ajur-max-shard" value="5" /> .

Bu, çağırma düzeyinde istenen parça sayısından bağımsız olarak enstrümantasyonun maksimum kaç kez parçalanabileceğini belirtmenize olanak tanır. Varsayılan olarak, enstrümantasyon, çağrı için istenen parça sayısına bölünecektir.

Örneğin, enstrümantasyon test APK'nız yalnızca iki test senaryosu içeriyorsa ancak yine de onu parçalamak istiyorsanız, ajur-max-shard değerinin 2 olması boş parçalar oluşturmamanızı sağlar.