Bölme işlemini yapılandırma

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

Laboratuvarda bir paket sürekli olarak çalıştırıldığında, genellikle tamamlanma süresini kısaltmak için paket birkaç cihaza bölünür. Genellikle koşum takımı, her parçanın yürütme süresini dengelemeye çalışarak genel tamamlanma süresini (son parça tamamlandığında) en aza indirir. Ancak bazı testlerin doğası gereği, her zaman yeterli iç gözleme sahip olmayız ve modül sahibinin bazı davranışları ayarlaması gerekir.

Parçalanabilir mi yoksa parçalanamaz mı?

Bir modülü (AndroidTest.xml) <option name="not-shardable" value="true" /> ile etiketleyerek koşum takımına parçalanmaması gerektiğini bildirebilirsiniz.

Normal bir modülde, koşum takımının modülünüzü parçalamasına izin vermek (varsayılan davranış) doğru bir yaklaşımdır. 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, dosya gönderme vb.) muhtemelen her cihaz için bir kez çalıştırılmasına neden olur. Modül kurulumunuz uzun ve maliyetli olup testin çalışma süresine kıyasla kopyalanmaya değmezse modülünüzü parçalanamaz olarak etiketlemeniz gerekir.

  • Modülünüzdeki test sayısı düşük olduğunda:

Bir modülün parçalanması, tüm test senaryolarının farklı cihazlarda bağımsız olarak yürütülmesine neden olabilir. Bu, ilk noktayla ilgilidir. Test sayınız düşükse bazı parçalarda tek bir test veya hiç test olmayabilir. Bu da hazırlık adımlarını oldukça maliyetli hale getirir. Örneğin, tek bir test durumu 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ırmadığımız sürece enstrümantasyonun kaç test içerdiğini koşum takımına göstermez. Bu işlemler maliyetlidir ve paketin parçası olan tüm modüller için parçalama sırasında yürütülemez.

Koşum takımı, 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 için maliyetli bir APK yüklemesi gerekir.

Bu nedenle, enstrümantasyon testi APK'sındaki test sayısı düşük olduğunda modülün <option name="not-shardable" value="true" /> ile etiketlenmesi, test sisteminin bu modülü parçalamanın değmeyeceğini bilmesini sağlar.

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

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

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