Paketi yeniden dene

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.