Bölme işlemini yapılandırma

Bu sayfada, paket modülü (AndroidTest.xml) için bölme işlemi aracılığıyla 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, her birinin kullanılma gerekçesiyle birlikte genel bir şekilde açıklamaya çalışacağız.

Laboratuvarda sürekli olarak çalıştırılan bir paket, genel tamamlama süresini azaltmak için genellikle birkaç cihaza bölünür. Donanım genellikle genel tamamlama süresini (son parçanın tamamlandığı zaman) 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 bazı davranışları ayarlamak için modül sahibinin yardımına ihtiyacımız vardır.

Bölünebilir mi bölünemez mi?

Bir modülü (AndroidTest.xml), <option name="not-shardable" value="true" /> ile etiketleyerek donanım kayışını parçalanmaması gerektiği konusunda bilgilendirebilirsiniz.

Tipik bir modülde, modülünüzü modül paketine ayırmasına izin vermek (varsayılan davranış) doğru olanıdı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çalara ayrılması, hazırlık işleminin (APK yükleme, dosyayı yayınlama vb.) ilgili cihaz başına bir kez çalıştırılmasına neden olur. Modül kurulumunuzun süresi uzun ve maliyetliyse ve testin çalışma süresine kıyasla çoğaltılmaya değmiyorsa modülünüzü parçalanamaz olarak etiketlemelisiniz.

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

Bir modülün parçalara ayrılması, tüm test durumları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 pahalı 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ı nedir?

AndroidJUnitTest üzerinden çalıştırılan bir enstrümantasyon testi, APK'yı gerçekten yükleyip çalıştırana kadar enstrümantasyonun kaç test içerdiğini donanıma göstermez. Bu işlemler maliyetlidir ve paketin bir parçası olan tüm modüller için bölümleme sırasında yürütülemez.

Donanım, enstrümantasyon testini gereğinden fazla parçalara ayırabilir ve bazı boş parçalar oluşabilir. Altı parçaya bölünmüş beş test içeren bir enstrümantasyon testi, bir test içeren beş parça ve test içermeyen bir parça oluşturur. Bu parçaların her biri için maliyetli bir APK yüklemesi gerekir.

Bu nedenle, enstrümantasyon testi APK'sindeki test sayısı düşük olduğunda modülü <option name="not-shardable" value="true" /> ile etiketlemek, koşum takımının bu modülün parçalara bölünmesinin buna değmediğini bilmesini sağlar.

AndroidJUnitTest çalıştırıcı, parçalanabileceği 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ğrı düzeyinde istenen parça sayısından bağımsız olarak enstrümantasyonun maksimum parça sayısı belirtmenize olanak tanır. Varsayılan olarak, enstrümantasyon, çağrı için istenen parça sayısına bölünür.

Örneğin, enstrümantasyon testi APK'nız yalnızca iki test senaryosu içeriyorsa ancak yine de parçalara ayırmak istiyorsanız ajur-max-shard değerinin 2 olması, boş parçalar oluşturmadığınızdan emin olmanızı sağlar.