Paketler genellikle birkaç test modülü içerir ve oldukça büyük bir test veri kümesi boyutuna ulaşabilir. Örneğin, Android Uyumluluk Test Paketi (CTS) yüzlerce modül ve yüz binlerce test örneği içerir.
Kötü yalıtım veya cihazların kötü bir duruma geçmesi nedeniyle çok sayıda testin başarısız olması olasıdır.
Süit yeniden deneme özelliği bu durumları ele almak için tasarlanmıştır: Kararsızlığı ve zayıf izolasyonu ortadan kaldırmak amacıyla, yalnızca süitlerin tamamını değil, yalnızca hataları yeniden denemenizi sağlar. 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.
Paketi yeniden deneme özelliğini uygulama
Sonuçların yeniden denenmesi, önceki sonuçların okunup önceki çağrının yeniden çalıştırılması anlamına gelir.
Yeniden denemeyi yönlendiren ana arayüz ITestSuiteResultLoader
'dir. Bu arayüz, önceki bir sonucu ve önceki komut satırını yüklemenize olanak tanır.
RetryRescheduler
, daha sonra önceki komutu yeniden oluşturmak ve yalnızca önceki hataları veya yürütülmemiş testleri yeniden çalıştırmak için bazı filtreleri doldurmak amacıyla bu bilgileri kullanır.
Örnek paket yeniden denemesi: 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, VTS gibi genişleten paketlerin çoğu için geçerlidir.
Aşağıdakilerle çağrılır:
cts-tradefed run retry --retry <session>
Oturum, önceki sonuçlar CTS konsolunda listelenerek bulunur:
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 bire bir aynısı yeniden yüklenir ve ek filtrelerle yeniden çalıştırılır. Bu, orijinal komutunuz bazı seçenekler içeriyorsa bunların da yeniden deneme kapsamına dahil olacağı anlamına gelir.
Örnek:
cts-tradefed run cts-dev -m CtsGestureTestCases
Yukarıdaki komutun yeniden denemesi her zaman CtsGestureTestCases
ile sınırlıdır çünkü yalnızca bu komutu içeren bir komutu yeniden deniyoruz.
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" />
Bunun, ana komutun XML yapılandırmasına eklenmesi gerekir. Bunun sonucunda, sonuç klasöründe bir test-record.pb
dosyası oluşturulur.
CTS yeniden denemesi, yeniden deneme çağrısını hazırlamak için test-record.pb
ve mevcut test_result.xml
'un bir kombinasyonundan veri yükler.