Süit oluşturma

Tradefed'deki paket, genel yürütmeyi sağlayan ortak bir test çalıştırıcısı altında çeşitli testlerin çalıştırıldığı bir kurulumu ifade eder.

Tradefed'de paketler, testlerin nasıl çalıştırıldığından bağımsız olarak eklenip kaldırılmasına olanak tanıyan ITestSuite sınıfı üzerinden çalıştırılır.

Tanımlar

  • Paket: Sonuçlarını tek bir çağrı altında bildirmek için benzer bir üst düzey kurulum altında çalışacak şekilde yapılandırılmış test modülleri kümesi.
  • Üst düzey kurulum: Test modüllerinden herhangi biri çalıştırılmadan önce cihazlara uygulanan kurulum.
  • Ana yapılandırma: Hangi modüllerin çalıştırılması gerektiğini ve hangi üst düzey kurulumun kullanılması gerektiğini açıklayan, paket düzeyinde Tradefed XML yapılandırması.
  • Modül düzeyinde kurulum: Modül çalıştırılmadan hemen önce cihazlara uygulanan kurulum. Bunlar modüle özgü kurulumlar olarak da bilinir.
  • Modül yapılandırması: Modülleri ve hangi modül düzeyinde kurulumun yapılması gerektiğini açıklayan AndroidTest.xml Tradefed XML yapılandırmasını ifade eder.
  • Modül: Bir kurulum adımından (modül düzeyinde kurulum), bir test yürütme adımından ve bir kaldırma adımından oluşan test birimi.
  • Modül içi yeniden deneme: Modülün içindeki koşum takımı tarafından yapılan otomatik yeniden deneme.
  • Paket yeniden deneme: Paketin daha önce başarısız olan testlerinin tamamen yeniden çalıştırılması.

ITestSuite yapısı

ITestSuite in Tradefed, bir paket yürütmesini yönlendiren ortak temel sınıfı ifade eder. Android Uyumluluk Test Paketi (CTS) ve Android Tedarikçi Test Paketi (VTS) başta olmak üzere tüm büyük test paketleri tarafından paylaşılır ve tüm paketlerde tutarlı bir yürütme deneyimi sağlar.

Bazen ITestSuite'i suite runner olarak adlandırırız.

Suite çalıştırıcı, yürütme sırasında şu adımları izler:

  1. Modülün yapılandırmasını yükleyin ve hangi kümenin çalıştırılacağını belirleyin.
  2. Her modülü çalıştırın:

    1. Modül düzeyinde kurulumu çalıştırın.
    2. Modül testlerini çalıştırın.
    3. Modül düzeyinde sökme işlemi gerçekleştirin.
  3. Sonuçları bildirin.

Üst düzey kurulum

Tradefed açısından ITestSuite yalnızca başka bir testtir. Bu karmaşık bir IRemoteTest olsa da diğerleri gibi sadece bir testtir. Bu nedenle, Tradefed yapılandırmasında paket çalıştırıcı belirtilirken Tradefed, yapılandırmanın normal düzenini izler: build_provider, target_preparer, test (bu durumda paketimiz) ve target_cleaner çalıştırılır.

Tradefed yapılandırmasındaki ITestSuite içeren bu sıra, üst düzey kurulumdur.

Örnek:

<configuration description="Common config for Compatibility suites">

    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>

    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />

    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>

Modül meta verileri

Test modülünde belirtilen ek bilgilere modül meta verileri diyoruz AndroidTest.xml. Bu meta veriler, modül hakkında ek bilgiler belirtmenize olanak tanır ve modüller meta veriler kullanılarak filtrelenebilir.

Örnek meta veriler:

<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

Meta verilerle ilgili filtre örneği:

--module-metadata-include-filter component=framework

Yukarıdaki komut, framework meta verileri component olarak tüm modülleri çalıştırır.

Tam AndroidTest.xml örneği:

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

Parametreli modül

Özel bir meta veri türü parameter'dır.

<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

Bu meta veriler, modülün standart uygulama modu yerine farklı bir modda (ör. anlık uygulama olarak) yürütülmesi gerektiğini belirtir.

Olası tüm modlar veya parametreler ModuleParameters ile açıklanır. ModuleParametersHelper içinde, modül kurulumunu belirli bir modda çalışacak şekilde değiştirmenize olanak tanıyan ilişkili bir işleyici bulunur.

Örneğin, hazır uygulama modu, APK yüklemesini hazır uygulama modu olarak zorlar.

Parametreleştirmenin gerçekleşmesi için komut satırının aşağıdakiyle etkinleştirilmesi gerekir:

--enable-parameterized-modules

Ayrıca, belirli bir modu aşağıdaki komutlarla da çalıştırabilirsiniz:

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

Bir modülün parametreli sürümü çalıştırıldığında sonuçlarını parametreli bir modül adı altında (ör. CtsGestureTestCases[instant] ve temel CtsGestureTestCases) bildirir.