Test gövdesi büyük olduğunda veya yürütme süresi uzadığında testleri birden fazla cihazda bölme (parçalama) olanağı sunarız.
Parçalama özelliğinin test çalıştırıcısı tarafından desteklenmesi için ön koşullar vardır.
Ana test çalıştırıcıların çoğu zaten parçalama özelliğini desteklediği için ek bir işlem yapmanız gerekmez. Şu anda parçalama desteklenenler: enstrümantasyon testleri, ana makine tarafında yürütülen testler, GTest.
Tradefed'de desteklediğimiz iki tür parçalama vardır: yerel ve dağıtılmış. Bu iki özellik arasında bazı benzerlikler vardır. Bu nedenle, bu sayfada önce ortak özellikler, ardından her birinin ayrıntıları açıklanmaktadır.
Yaygın özellikler
Her iki parçalama biçimi de test çalıştırıcılarından aynı özellikleri varsayar: Parçalar bağımsız ve belirleyici olmalıdır. Her iki parçalama yönteminin de ilk adımı, testlerin tam ve sıralı listesini oluşturup bunları farklı gruplara/parçalara ayırmaktır.
Parçalama biçimlerinin temel farkı, testleri yürütme şekilleridir. Daha fazla bilgi için aşağıdaki bölümleri inceleyin.
Yerel parçalama
Yerel parçalama, parçalanmış çağrının yürütülmesine dahil olan tüm cihazların aynı fiziksel ana makineye bağlı olduğu anlamına gelir.
Uygulama
Yerel parçalama, yürütülmesi gereken bir test havuzu oluşturarak ve her cihazın boş olduğunda (yani önceki test tamamlandığında) testleri yoklamasını sağlayarak aynı ana makineye bağlı tüm cihazlardan yararlanır. Bu sayede cihaz kullanımı optimize edilir. Bu işleme dinamik parçalama da denir.
Seçenekler
--shard-count XX
Dağıtılmış parçalama
Dağıtılmış parçalama, parçalanmış çağrının yürütülmesine dahil olan tüm cihazların herhangi bir yerde bulunabileceği ve farklı fiziksel ana makinelere bağlanabileceği anlamına gelir.
Uygulama
Dağıtılmış parçalama, test listesi oluşturulurken gerçekleşir ve her parçanın içeriği yalnızca o anda istenen parçayı yürütür. Bu nedenle, tüm dağıtılmış parçalar önce aynı listeyi oluşturur ve ardından karşılıklı olarak hariç tutulan bir alt kümesini yürütür. Bu da tüm testlerin yürütülmesini sağlar.
Bu formun temel özelliği, parçaların birbirinden tamamen habersiz olması ve bağımsız olarak başarısız olabilmesidir.
Asıl dezavantaj, her parçadaki her testin çalışma zamanını önceden tahmin edemediğimiz için parça uzunluğunun mutlaka dengeli olmamasıdır. Dağıtım, her parçada yaklaşık olarak aynı sayıda test senaryosu olacak şekilde yapılır.
Seçenekler
--shard-count XX --shard-index XX
Jeton parçalama
Jeton parçalama yalnızca yerel parçalama ile kullanılabilir. Bu işaret, yerel olmayan parçalama kullanım alanlarında çalışmaz. Bazen parçalama işlemine dahil olan cihazlardan biri, diğerlerinde bulunmayan özel kaynaklar (ör. SIM kart) barındırır. Bazı testler yalnızca söz konusu özel kaynak kullanılabildiğinde çalışabilir, aksi takdirde başarısız olur.
Bu tür kullanım alanlarına yönelik çözümümüz jeton parçalama işlemidir. Test modülleri, AndroidTest.xml
içinde hangi özel kaynağa ihtiyaç duyduklarını belirtebilir ve Tradefed, testleri kaynağa sahip bir cihaza yönlendirir.
XML yapılandırması
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
Jetonun value
, Tradefed'in TokenProperty
ile eşleşiyor ve TokenProviderHelper
içindeki bir işleyiciyle ilişkilendiriliyor.
Bu sayede, test modüllerinin testleri düzgün şekilde yürütebilen cihazlarda çalıştırılması sağlanır.
Hiçbir cihaz testi çalıştıramazsa ne olur?
Test modülüne uygun kaynağa sahip cihaz yoksa test modülü düzgün şekilde çalışamadığı için başarısız olur ve atlanır.
Örneğin, bir test modülü çalışmak için SIM kart ister ancak hiçbir cihazda SIM kart yoksa test modülü başarısız olur.
Uygulama
Bu özellik işaretini ana Tradefed komut satırına iletin:
--enable-token-sharding