Suite Yeniden Denemeyi Kullan

Bir süit, birkaç test modülü içerme eğilimindedir ve oldukça büyük bir test gövdesi boyutuna ulaşabilir. Örneğin, Android Uyumluluk Test Paketi (CTS) , yüzlerce modül ve yüz binlerce test senaryosu içerir.

Kötü izolasyon veya cihazların kötü bir duruma geçmesi nedeniyle çok sayıda testin başarısız olması mümkün hale gelir.

Paket yeniden deneme özelliği bu durumları ele almak içindir: Kesinti ve zayıf izolasyonu ortadan kaldırmak için yalnızca tam süitler yerine arızaları 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 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önlendiren ana arabirim, önceki bir sonucu ve önceki komut satırını yüklemenize izin veren ITestSuiteResultLoader'dır .

RetryRescheduler daha sonra bu bilgiyi önceki komutu yeniden oluşturmak ve yalnızca önceki hataları yeniden çalıştırmak veya yürütülmeyen testleri yeniden çalıştırmak için bazı filtreleri doldurmak için kullanır.

Örnek paketi yeniden deneme: CTS

CTS'deki yeniden deneme yapılandırması:

<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 ).

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

cts-tradefed run retry --retry <session>

Oturum, önceki sonuçların CTS konsolunda 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

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ı olacağı anlamına gelir.

Örneğin:

cts-tradefed run cts-dev -m CtsGestureTestCases

Yalnızca onu içeren bir komutu yeniden denediğimiz için, yukarıdakilerin yeniden denenmesi her zaman CtsGestureTestCases bağlı olacaktır.

CTS tarzı paket için yeniden denemeyi yapılandırın

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" />

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

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