süitler kurun

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

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

Tanımlar

  • Suite: 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 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ı gerektiğini ve hangi üst düzey kurulumun kullanılması gerektiğini açıklayan paket düzeyindeki Tradefed XML yapılandırması.
  • Modül düzeyinde kurulum: Kurulum, modülü çalıştırmadan hemen önce cihazlara uygulanır. Bunlar aynı zamanda 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 ünitesi.
  • Modül içi yeniden deneme: Modül içindeki donanım tarafından gerçekleştirilen otomatik yeniden deneme.
  • Paketin yeniden denemesi: Paketin daha önce başarısız olan testlerinin tam olarak 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. Başta Android Uyumluluk Test Paketi (CTS) ve Android Satıcı Test Paketi (VTS) olmak üzere tüm önemli test paketleri tarafından paylaşılır ve tüm paketlerde tutarlı bir yürütme deneyimi sağlar.

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

Paket çalıştırıcısı 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 sökmeyi çalıştırın.
  3. Sonuçları bildirin.

Üst düzey kurulum

Tradefed açısından bakıldığında ITestSuite sadece başka bir testtir. Bu karmaşık bir test ama yine de diğer IRemoteTest gibi bir test. Dolayısıyla, Tradefed konfigürasyonunda paket çalıştırıcısını belirlerken, Tradefed olağan konfigürasyon modelini takip eder: build_provider , target_preparer , test (bu durumda bizim paketimiz) ve target_cleaner çalıştırmak.

ITestSuite içeren Tradefed yapılandırmasındaki 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 modül meta veri ekstra bilgilerini AndroidTest.xml adlandırıyoruz. 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 verilerdeki örnek filtre:

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

Yukarıdakiler, tüm modülleri bileşen meta verileri olarak bir çerçeveyle çalıştıracaktı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 uygulama modu yerine farklı bir modda (örneğin hazır uygulama olarak) yürütülmesi gerektiğini belirtir.

Olası tüm modlar veya parametreler, ModuleParameters tarafından tanımlanır ve ModuleParametersHelper , belirli modda yürütülecek modül kurulumunu değiştirmenizi sağlayan ilişkili bir işleyiciye sahiptir.

Örneğin, hazır uygulama modu, APK kurulumunu anında mod olarak zorlar.

Parametreleştirmenin gerçekleşmesi için komut satırının bunu aşağıdakilerle 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 parametreli bir sürümü çalıştığında, sonuçlarını parametreli bir modül adı altında rapor eder; örneğin CtsGestureTestCases[instant] yerine temel CtsGestureTestCases .