Bir paket, birkaç test modülü içerir ve oldukça büyük bir test derlem boyutuna ulaşabilir. Örneğin, Android Uyumluluk Test Paketi (CTS), yüzlerce modül ve yüzbinlerce test durumu içerir.
Zayıf izolasyon veya kötü duruma giren cihazlar nedeniyle büyük miktarda testin başarısız olması mümkün hale gelir.
Paketi yeniden deneme özelliği, bu durumları ele almak içindir: Kesintililiği ve zayıf izolasyonu ortadan kaldırmak için tüm paketler yerine yalnızca hataları yeniden denemenize olanak tanır. Bir test sürekli olarak başarısız oluyorsa, yeniden deneme de başarısız olur; ve gerçek bir sorun olduğuna dair çok daha güçlü bir sinyal alırsınız.
Paket yeniden denemesini uygula
Sonuçların yeniden denenmesi, önceki sonuçların okunmasını ve önceki çağrının yeniden çalıştırılmasını içerir.
Yeniden denemeyi yürüten ana arabirim, önceki bir sonucu ve önceki komut satırını yüklemenizi sağlayan ITestSuiteResultLoader
.
RetryRescheduler
daha sonra bu bilgiyi önceki komutu yeniden oluşturmak ve yalnızca önceki hataları veya yürütülmeyen testleri yeniden çalıştırmak için bazı filtreleri doldurmak için kullanır.
Örnek paket yeniden denemesi: CTS
CTS'deki yeniden deneme yapılandırması şöyledir:
<configuration description="Runs a retry of a previous CTS session.">
<object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
<test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />
<logger class="com.android.tradefed.log.FileLogger">
<option name="log-level-display" value="WARN" />
</logger>
</configuration>
Bu, onu genişleten süitlerin çoğu için geçerlidir, örneğin VTS .
Şununla çağrılacaktı:
cts-tradefed run retry --retry <session>
Oturum, önceki sonuçları CTS konsolunda listeleyerek bulunabilir:
cts-tf > l r
Session Pass Fail Modules Complete Result Directory Test Plan Device serial(s) Build ID Product
0 2092 30 148 of 999 2018.10.29_14.12.57 cts [serial] P Pixel
Tam orijinal komut yeniden yüklenecek ve ekstra filtrelerle yeniden çalıştırılacaktır. Bu, orijinal komutunuz bazı seçenekler içeriyorsa, bunların da yeniden denemenin bir parçası olduğu anlamına gelir.
Örneğin:
cts-tradefed run cts-dev -m CtsGestureTestCases
Yukarıdakilerin yeniden denenmesi her zaman CtsGestureTestCases
bağlıdır çünkü yalnızca onu içeren bir komutu yeniden deniyoruz.
CTS tarzı paket için yeniden denemeyi yapılandırın
Yeniden denemenin çalışması için önceki sonuçların proto formatında dışa aktarılması gerekir. Aşağıdakilerin eklenmesi gerekiyor:
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
Bunun, ana komutun XML yapılandırmasına eklenmesi gerekir ve sonuç klasöründe bir test-record.pb
dosyası oluşturulur.
CTS yeniden denemesi daha sonra yeniden deneme çağrısını hazırlamak için test-record.pb
ve mevcut test_result.xml
kombinasyonundan verileri yükler.