Süit oluşturma

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ını tek bir çağrı altında raporlamak için benzer bir üst düzey kurulum altında çalışacak şekilde yapılandırılmış test modülleri grubu.
  • Ü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: Kurulum adımı (modül düzeyinde kurulum), test yürütme adımı ve sökme adımından oluşan test birimi.
  • 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'deki ITestSuite, bir paketin yürütülmesini sağlayan 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ı, çalıştırma sırasında aşağıdaki adımları uygular:

  1. Modülün yapılandırmasını yükleyin ve hangi grubun ç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 inceleme çalıştırın.
  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 veri:

<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 ayarını 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 yüklemesini hazır uygulama modu olarak zorlar.

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

--enable-parameterized-modules

Aşağıdakilerle belirli bir modu tek başına çalıştırmak da mümkündür:

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