süitler kurun

Tradefed'teki bir paket, genel yürütmeyi yönlendiren ortak bir test yürütücüsü altında birkaç testin yürütüldüğü bir kurulumu ifade eder.

Tradefed'te süitler, testlerin nasıl çalıştırıldıklarından bağımsız olarak eklenmesine ve kaldırılmasına izin veren ITestSuite sınıfı aracılığıyla yürütülür.

Tanımlar

  • Paket: Sonuçlarını tek bir çalıştırma altında raporlamak 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 birini çalıştırmadan ö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. 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ı ( modül düzeyinde kurulum ), bir test yürütme adımı ve bir sökme adımından oluşan test birimi.
  • Modül içi yeniden deneme: Modül içindeki kablo demeti tarafından yapılan otomatik yeniden deneme.
  • Paketin yeniden denenmesi: Paketin önceden başarısız olan testlerinin tamamen yeniden çalıştırılması.

ITestSuite yapısı

Tradefed'teki ITestSuite bir paket yürütmeyi yöneten ortak temel sınıfı ifade eder. Başta Android Compatibility Test Suite (CTS) ve Android Vendor Test Suite (VTS) olmak üzere tüm büyük test takımları tarafından paylaşılır ve tüm süitlerde tutarlı bir yürütme deneyimi sağlar.

Bazen ITestSuite'i paket çalıştırıcısı olarak adlandırırız.

Suite runner, yürütülürken şu adımları izler:

  1. Modülün konfigürasyonunu yükleyin ve hangi setin ç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 testlerini çalıştırın.
    3. Modül düzeyinde ayırma işlemini çalıştırın.
  3. Sonuçları bildirin.

Üst düzey kurulum

Tradefed'in bakış açısından, ITestSuite başka bir testtir. Bu karmaşık bir test ama yine de herhangi bir diğer IRemoteTest gibi bir test. Bu nedenle, bir Tradefed yapılandırmasında paket çalıştırıcıyı belirtirken, Tradefed yapılandırmanın olağan modelini izler: build_provider , target_preparer , test (bu durumda bizim paketimiz) ve target_cleaner çalıştırma.

ITestSuite içeren Tradefed konfigürasyonundaki bu sıra, en ü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

AndroidTest.xml test modülünde belirtilen modül meta verisine ekstra bilgi diyoruz. Bu meta veriler, modül hakkında ek bilgiler belirlemenizi sağlar 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 verilerde örnek filtre:

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

Yukarıdakiler, bileşen meta verileri olarak bir çerçeveye sahip 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 .

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

Bu meta veriler, modülün standart bir uygulama modu yerine örneğin bir hazır uygulama gibi farklı bir modda yürütülmesi gerektiğini belirtir.

Tüm olası modlar veya parametreler, ModuleParameters tarafından tanımlanır ve ModuleParametersHelper içinde, belirli bir modda yürütmek için modül kurulumunu değiştirmenize izin veren ilişkili bir işleyiciye sahiptir.

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

Parametreleştirmenin gerçekleşmesi için, komut satırının şu şekilde etkinleştirmesi gerekir:

--enable-parameterized-modules

Belirli bir modu aşağıdakilerle ç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 parametreleştirilmiş bir sürümü çalıştığında, sonuçlarını parametreleştirilmiş bir modül adı altında bildirir; örneğin, temel CtsGestureTestCases karşı CtsGestureTestCases[instant] .