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: Benzer bir üst düzey düzey altında çalışacak şekilde yapılandırılmış test modülleri ayarlarını tek bir çağrı altında raporlamak için kullanır.
  • Üst düzey kurulum: test modüllerini de kullanabilirsiniz.
  • 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: Kurulum, modülünü kullanabilirsiniz. Bunlara modüle özgü ayarlar da denir.
  • Modül yapılandırması: AndroidTest.xml Tradefed XML anlamına gelir ve hangi modül düzeyinde kurulumu açıklayan bir yapılandırma yapılması gerekir.
  • 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 donanım kullanılarak otomatik yeniden deneme yapılır.
  • 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 paket yürütmesini sağlayan ortak temel sınıfı ifade eder. İnsanların Başta Android Uyumluluk Testi olmak üzere tüm büyük test paketleri tarafından paylaşılmıştır Suite (CTS) ve Android Vendor Test Suite (VTS) sunar ve tutarlı bir yürütme deneyimi sağlar. yer alır.

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 kurulum çalıştırın.
    2. Modül testlerini çalıştırın.
    3. Modül düzeyinde inceleme yapın.
  3. Sonuçları bildirin.

Üst düzey kurulum

Tradefed açısından ITestSuite, başka bir testten ibarettir. Bu karmaşık bir diğeri IRemoteTest gibi hâlâ yalnızca 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 modül meta verilerine ek bilgiler adını veriyoruz. AndroidTest.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 veri için örnek filtre:

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

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

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

Bu meta veri, modülün farklı bir mod olarak değiştirildi.

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 olarak yüklenmesini zorunlu kılar yatırım yapmanız önemlidir.

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

--enable-parameterized-modules

Belirli bir modu aşağıdakilerle de çalıştırabilirsiniz:

--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ı (örneğin, CtsGestureTestCases[instant] veya CtsGestureTestCases temel.