Süitlerde ayarlama

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

Tradefed'de paketler, ITestSuite sınıfı aracılığıyla çalıştırılır. Bu sınıf, testlerin çalıştırılma biçimlerinden bağımsız olarak eklenmesine ve kaldırılmasına olanak tanır.

Tanımlar

  • Paket: Sonuçları 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ı 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. Bunlara modüle özgü ayarlar da denir.
  • 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 ayırma adımından oluşan test birimidir.
  • Modül içi yeniden deneme: Modülün içindeki kablo demeti tarafından yapılan otomatik yeniden deneme.
  • Paketi yeniden dene: Paketin daha önce başarısız olan testlerinin tamamının yeniden çalıştırılması.

ITestSuite yapısı

Tradefed'teki ITestSuite, paket yürütme işlemini yürüten ortak temel sınıfı ifade eder. Özellikle Android Uyumluluk Test Paketi (CTS) ve Android Tedarikçi Test Paketi (VTS) 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.

ITestSuite'ten bazen test grubu çalıştırıcı olarak da bahsedilir.

Paket çalıştırıcı, yürütürken şu adımları izler:

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

    1. Modül düzeyinde kurulumu çalıştırın.
    2. Modül testleri çalıştırın.
    3. Modül düzeyinde ayırma işlemi gerçekleştirin.
  3. Sonuçları bildirin.

Üst düzey kurulum

Tradefed açısından ITestSuite, başka bir testten ibarettir. Karmaşık bir test olsa da diğer IRemoteTest'ler gibi bir testtir. Bu nedenle, Tradefed yapılandırmasında paket çalıştırıcıyı belirtirken Tradefed, yapılandırmanın normal kalıbını izler: build_provider, target_preparer, test (bu durumda paketimiz) ve target_cleaner çalıştırma.

Tradefed yapılandırmasında 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 adını veririzAndroidTest.xml. Bu meta veriler, modülle ilgili 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 verilere göre filtreleme örneği:

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

Yukarıdaki komut, tüm modülleri bileşen meta verisi olarak çerçeve ile ç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

parameter özel bir meta veri türü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. anında uygulama olarak) çalıştırılması gerektiğini belirtir.

Olası tüm modlar veya parametreler ModuleParameters tarafından açıklanır ve ModuleParametersHelper içinde, modül kurulumunu belirli bir modda çalıştıracak şekilde değiştirmenize olanak tanıyan ilişkili bir işleyiciye sahiptir.

Örneğin, hazır uygulama modu APK'nın hazır uygulama modunda yüklenmesini zorunlu kılar.

Parametrelendirmenin gerçekleşmesi için komut satırının aşağıdakilerle etkinleştirilmesi gerekir:

--enable-parameterized-modules

Ayrıca tek bir mod aşağıdakiler için çalıştırılabilir:

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

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

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