Paketi yeniden deneme özelliğini kullanma

Bir pakette genellikle birkaç test modülü bulunur ve oldukça büyük bir test korpusu boyutuna ulaşılabilir. Örneğin, Android Uyumluluk Test Paketi (CTS) yüzlerce modül ve yüz binlerce test durumu içerir.

Yetersiz izolasyon veya cihazların kötü duruma girmesi nedeniyle çok sayıda testin başarısız olması mümkündür.

Paket yeniden deneme özelliği bu durumları ele almak için tasarlanmıştır: Kararsızlığı ve zayıf izolasyonu ortadan kaldırmak için tam paketler yerine yalnızca hataları yeniden denemenize olanak tanır. Bir test sürekli olarak başarısız olursa 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 uygulama

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 sağlayan ana arayüz ITestSuiteResultLoader'dir. Bu arayüz, önceki sonucu ve önceki komut satırını yüklemenize olanak tanır.

RetryRescheduler, bu bilgileri kullanarak önceki komutu yeniden oluşturur ve yalnızca önceki hataları veya yürütülmeyen testleri yeniden çalıştırmak için bazı filtreleri doldurur.

Ö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, VTS gibi bu özelliği genişleten çoğu paket için geçerlidir.

Şu şekilde çağrılır:

cts-tradefed run retry --retry <session>

Oturum, CTS konsolunda önceki sonuçlar listelenerek 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, ek filtrelerle yeniden yüklenir ve tekrar çalıştırılır. Bu, orijinal komutunuzda bazı seçenekler varsa bunların da yeniden deneme işlemine dahil edileceği anlamına gelir.

Örneğin:

cts-tradefed run cts-dev -m CtsGestureTestCases

Yukarıdaki işlemin yeniden denenmesi her zaman CtsGestureTestCases ile sınırlıdır. Çünkü yalnızca bu öğenin dahil olduğu bir komut yeniden denenmektedir.

CTS tarzı paket için yeniden denemeyi yapılandırma

Yeniden denemenin çalışması 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" />

Bu, ana komutun XML yapılandırmasına eklenmelidir ve sonuç klasöründe test-record.pb dosyasının oluşturulmasına neden olur.

CTS yeniden denemesi, yeniden deneme çağrısını hazırlamak için test-record.pb ve mevcut test_result.xml kombinasyonundan verileri yükler.