Test veri kümesi büyük olduğunda veya yürütme süresi uzadıkça testleri birkaç cihaza bölme olanağı sunarız: bölümlere ayırma.
Test çalıştırıcısının bölümlemeyi desteklemesi için bölümlemenin önkoşulları vardır.
Ana test çalıştırıcılarının çoğu parçalamayı zaten desteklediğinden çalışma gereklidir. Şu anda parçalama desteklemektedir: araç testleri, ana makine taraflı testler, GTest.
Tradefed'de desteklediğimiz iki tür bölümleme vardır: yerel ve dağıtılmış. Bu ikisi arasında bazı benzerlikler olduğu için, bu sayfada ortak özellikler ve her birinin ayrıntılarını öğrenin.
Yaygın özellikler
Her iki bölme biçimi de test çalıştırıcılardan aynı özellikleri varsayar: Parçaların bağımsız ve deterministik olması gerekir. Her iki parçalamanın da ilk adımı tam sıralı test listesini oluşturmak ve ardından bunları farklı gruplar/parçalar.
Bölme biçimleri arasındaki temel fark, testlerin yürütülme şeklidir. Daha fazla bilgiyi aşağıdaki bölümlerde bulabilirsiniz.
Yerel parçalama
Yerel parçalama, parçalama işlemine dahil edilen tüm cihazları ifade eder. aynı fiziksel ana makineye bağlı olduğundan emin olun.
Uygulama
Yerel bölme, yürütülmesi gereken bir test havuzu oluşturarak ve her cihazın boş olduğunda (yani önceki test tamamlandığında) testleri sorgulayarak aynı ana makineye bağlı tüm cihazlardan yararlanır. Bu, optimize edilmiş bir cihaz kullanımı sağlar. Biz de buna diyoruz. dinamik parçalama.
Seçenekler
--shard-count XX
Dağıtılmış parçalama
Dağıtılmış bölme, bölmelenmiş çağrının yürütülmesinde yer alan tüm cihazların herhangi bir yerde bulunabileceği ve farklı fiziksel ana makinelere bağlı olabileceği anlamına gelir.
Uygulama
Dağıtılmış bölme işlemi, test listesi oluşturulduktan sonra gerçekleşir ve her bir parçanın içeriği yalnızca o anda istenen parçayı yürütür. Yani tüm dağıtılmış parçalardan önce aynı listeyi derler ve ardından ortak olarak test edilir. Bu da tüm testlerin yürütülmesine neden olur.
Bu formun ana özelliği, kırıkların her biri başarısızlığa uğrayabilir.
Ana dezavantaj, her parçadaki her testin çalışma süresini önceden tahmin edemediğimiz için parça uzunluğunun her zaman dengeli olmamasıdır. Dağılım, her parçada yaklaşık olarak aynı sayıda test senaryosuna sahip olacak şekilde yapılır.
Seçenekler
--shard-count XX --shard-index XX
Jeton bölme
Jeton kırma yalnızca yerel parçalamayla kullanılabilir. Bayrak yerel olmayan parçalama kullanım alanlarında çalışmıyor. Bazen parçalara ayırma işlemine dahil olan cihazlardan biri, SIM kartı gibi diğer cihazlarda bulunmayan özel kaynaklara sahiptir. Bazı testler yalnızca o özel kaynak mevcut olduğunda ve başarısız olur.
Bu tür kullanım alanlarına yönelik çözümümüz jeton kırmadır. Test modülleri, AndroidTest.xml
içinde ihtiyaç duydukları özel kaynağı belirtebilir ve Tradefed, testleri kaynağın bulunduğu 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
ve şuradaki bir işleyiciyle ilişkilendirilir:
TokenProviderHelper
.
Bu şekilde, test modüllerini düzgün şekilde çalıştırabilen cihazlarda yürütmeniz gerekecek.
Hiçbir cihaz testi çalıştıramıyorsa ne olur?
Test modülüyle eşleşen bir kaynağa sahip cihaz yoksa test modülü düzgün şekilde yürütülemediği için başarısız olur ve atlanır.
Örneğin, bir test modülü çalıştırmak 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