Bir paket genellikle 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 senaryosu içerir.
Zayıf izolasyon veya cihazların kötü duruma geçmesi nedeniyle çok sayıda testin başarısız olması mümkün hale gelir.
Paketi yeniden deneme özelliği bu durumları ele almak içindir: Kesintileri ve zayıf izolasyonu ortadan kaldırmak için yalnızca tam paketler yerine 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.
Paketi yeniden denemeyi uygulayın
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önlendiren ana arayüz, önceki 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 amacıyla 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 çoğu paket için geçerlidir, örneğin VTS .
Şununla çağrılacaktır:
cts-tradefed run retry --retry <session>
Oturum, CTS konsolunda önceki sonuçların listelenmesiyle 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
Orijinal komutun tamamı yeniden yüklenecek ve ekstra filtrelerle yeniden çalıştırılacaktır. Bu, orijinal komutunuz bazı seçenekleri 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 işe yaraması için önceki sonuçların proto biçiminde dışa aktarılması gerekir. Aşağıdakilerin eklenmesi gerekir:
<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ının oluşturulmasıyla sonuçlanır.
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.