Bu sayfa, parçalama yoluyla bir paket modülü ( AndroidTest.xml
) için nelerin ayarlanabileceğini ve laboratuvarda sürekli yürütme sırasında en iyi hız performansını elde etmenin mümkün olduğunu açıklar. Seçenekleri, her birinin kullanım gerekçesi ile genel bir şekilde açıklamaya çalışacağız.
Laboratuvarda bir paketi sürekli olarak çalıştırırken, toplam tamamlanma süresini azaltmak için paket genellikle birkaç cihaza bölünür. Kablo demeti tipik olarak, genel tamamlanma süresini (son parça bittiğinde) en aza indirmek için her bir 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
) parçalanmaması gerektiğini kablo demetine bildirmek için <option name="not-shardable" value="true" />
ile etiketlemek 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ü parçalamak, hazırlığın (APK, push dosyası vb. yükleme) muhtemelen ilgili cihaz başına bir kez çalıştırılmasıyla sonuçlanır. Modül kurulumunuz uzun ve pahalıysa ve testin çalışma süresine kıyasla çoğaltılmaya değmezse, modülünüzü parçalanamaz olarak etiketlemelisiniz.
- Modülünüzdeki test sayısı düşük olduğunda:
Bir modülü parçalamak, tüm test durumlarının muhtemelen farklı cihazlarda bağımsız olarak yürütülmesine neden olur. Bu, birinci noktayla ilgilidir; test sayınız azsa, bazı kırıklarda tek bir testle veya hiç testle sonuçlanabilirsiniz, bu da herhangi bir hazırlık aşamasını oldukça pahalı hale getirebilir. Ö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ı fiilen yükleyip çalıştırana kadar, cihazın parçası olan testlerin sayısını kablo demetine göstermez. Bu işlemler maliyetlidir ve paketin tüm modüller parçası için parçalama zamanında yürütülemez.
Kablo demeti, enstrümantasyon testini aşırı parçalayabilir ve bazı boş parçalarla sonuçlanabilir; bir enstrümantasyon testinin altı parçada beş testle parçalanması, beş parçanın bir testle ve bir parçanın hiç test olmamasıyla sonuçlanır. Bu parçaların her biri, maliyetli bir APK kurulumu gerektirecektir.
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 bu modülü parçalamaya değmeyeceğini bilmesini 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, başlatma seviyesinde talep edilen parça sayısından bağımsız olarak enstrümantasyonun parçalanabileceği maksimum sayıyı belirtmenize olanak tanır. Varsayılan olarak enstrümantasyon, çağırma için talep edilen parça sayısına bölünmüş olacaktır.
Örneğin, enstrümantasyon test 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.