parçalamayı yapılandır

Bu sayfada parçalama yoluyla bir paket modülü ( AndroidTest.xml ) için neyin ayarlanabileceği ve laboratuvarda sürekli yürütme sırasında en iyi hız performansının elde edilmesinin mümkün olduğu açıklanmaktadır. Seçenekleri, her birinin kullanım gerekçeleriyle birlikte genel bir şekilde açıklamaya çalışacağız.

Laboratuvarda bir paketi sürekli olarak çalıştırırken, genel tamamlanma süresini azaltmak için paket genellikle birkaç cihaza bölünür. Donanım genellikle genel tamamlanma süresini (son parça bittiğinde) en aza indirmek için 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 ihtiyaç duyuyoruz.

Parçalanabilir mi, parçalanamaz mı?

Kablo demetine parçalanmaması gerektiğini bildirmek için bir modülü ( AndroidTest.xml ) <option name="not-shardable" value="true" /> ile etiketlemek mümkündür.

Tipik bir modülde, donanım parçasının 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 yükleme, aktarma dosyası vb.) muhtemelen ilgili cihaz başına bir kez çalıştırılmasına neden olur. Modül kurulumunuz uzun ve pahalıysa ve testin çalışma süresiyle karşılaştırıldığında kopyalanmaya değmiyorsa modülünüzü parçalanamaz olarak etiketlemelisiniz.

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

Bir modülün parçalanması, tüm test senaryolarının muhtemelen farklı cihazlarda bağımsız olarak yürütülmesine neden olur. Bu birinci noktayla ilgilidir; Test sayınız düşükse, bazı parçalarda tek bir test yapılabilir veya hiç test yapılmayabilir, bu da herhangi bir hazırlık adımını oldukça pahalı hale getirebilir. Örneğin, tek bir test senaryosu için APK yüklemek genellikle buna değmez.

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

AndroidJUnitTest üzerinden çalışan bir enstrümantasyon testi, APK'yı gerçekten yükleyip çalıştırana kadar kaç testin enstrümantasyonun parçası olduğunu koşuma göstermez. Bu işlemler maliyetlidir ve paketin tüm modülleri için parçalama zamanında gerçekleştirilemez.

Kablo demeti enstrümantasyon testini aşırı parçalayabilir ve bazı boş parçalarla sonuçlanabilir; Altı parçada beş test içeren bir enstrümantasyon testinin parçalanması, bir test içeren beş parça ve test içermeyen bir parça ile sonuçlanır. Bu parçaların her biri maliyetli bir APK kurulumu gerektirecektir.

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

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

Bu, çağrı seviyesinde talep edilen parça sayısına bakılmaksızın enstrümantasyonun maksimum kaç kez parçalanabileceğini belirtmenize olanak tanır. Varsayılan olarak araçlar, çağrı için istenen parça sayısına bölünecektir.

Örneğin, enstrümantasyon testi 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şturmadığınızdan emin olmanızı sağlar.