Parçalamayı yapılandır

Bu sayfada, bir paket modülünde (AndroidTest.xml) parçalama yaparak nelerin ayarlanabileceği ve laboratuvardaki sürekli yürütme sırasında en iyi hız performansını elde etme hakkında bilgi verilmektedir. Seçenekleri, her birinin neden kullanıldığını açıklayarak 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.

Parçalanabilir veya kırılabilir değil mi?

Bir modülün (AndroidTest.xml), parçalanmaması gerektiğini belirtmek için <option name="not-shardable" value="true" /> ile etiketlenebilir.

Tipik bir modülde, modülünüzü modül grubuna ayırmak (varsayılan davranış) doğru bir işlemdir. 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ü bölünemez 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 tek bir test yaptırabilir veya bazı parçalarda hiç test yaptırmayabilirsiniz. Bu da hazırlık adımlarının çok maliyetli olmasına neden olabilir. Örneğin, bir APK'yı tek bir test durumu için yüklemek genellikle buna değmez.

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

AndroidJUnitTest ile çalıştırılan bir araç testi, APK gerçekten yükleyip çalıştırana kadar kaç testin bu testin parçası olduğu konusunda bilgilendirilmez. 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 kırıkların her biri, maliyetli bir APK yüklemesi gerektirir.

Bu nedenle, enstrümantasyon testi APK'sindeki testlerin 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çalara bölünmesine 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ğrı düzeyinde istenen parça sayısından bağımsız olarak enstrümanın maksimum kaç kez kırılabileceğini belirtmenize olanak tanır. Enstrümantasyon varsayılan olarak, ç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.