Test bölme

Test gövdesi büyük olduğunda veya yürütme süresi uzadığında testleri birden fazla cihazda bölme imkanı sunarız: parçalama.

Parçalama özelliğinin test çalıştırıcısında desteklenmesi için ön koşullar vardır.

Ana test çalıştırıcıların çoğu zaten parçalama özelliğini desteklediğinden ek bir işlem yapmanız gerekmez. Aşağıdaki testler zaten parçalama özelliğini desteklemektedir: 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çimleri arasındaki 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.

Yürütme

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 durum, cihaz kullanımının optimize edilmesini sağlar. 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.

Yürütme

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 birbirini dışlayan bir alt kümesini yürütür. Bu da tüm testlerin yürütülmesine neden olur.

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

Token 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 değeri, Tradefed'in TokenProperty değeriyle eşleşiyor ve TokenProviderHelper içinde 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ıştırılamadığından başarısız olur ve atlanır.

Örneğin, bir test modülü çalışmak için SIM kart istiyorsa ancak hiçbir cihazda SIM kart yoksa test modülü başarısız olur.

Uygulama

Bu özellik bayrağını ana Tradefed komut satırına iletin:

--enable-token-sharding