Suiten einrichten

Eine Suite in Tradefed bezieht sich auf eine Einrichtung, in der mehrere Tests unter einem der die gesamte Ausführung steuert.

In Tradefed werden die Suiten ITestSuite , mit der Tests unabhängig von ihrer Art hinzugefügt und entfernt werden können. ausführen.

Definitionen

  • Suite: Eine Gruppe von Testmodulen, die für die Ausführung unter einer ähnlichen obersten Ebene einrichten, um ihre Ergebnisse in einem einzigen Aufruf zu melden.
  • Einrichtung auf oberster Ebene: Die Einrichtung wird auf die Geräte angewendet, bevor eine der Testmodule.
  • Hauptkonfiguration: Die gehandelte XML-Konfiguration auf Suiteebene, die wird beschrieben, welche Module ausgeführt werden und welche oberste Ebene eingerichtet werden sollte. verwendet.
  • Einrichtung auf Modulebene: Die Einrichtung wird direkt vor der Ausführung auf die Geräte angewendet. -Modul. Diese werden auch als modulspezifische Konfigurationen bezeichnet.
  • Modulkonfiguration: Bezieht sich auf die gehandelte XML-Datei von AndroidTest.xml Konfiguration, die die Module beschreibt und welche Einrichtung auf Modulebene sollte erledigt werden.
  • Modul: Die Testeinheit besteht aus einem Einrichtungsschritt (Einrichtung auf Modulebene), einem Test einen Ausführungs- und einen Trennschritt an.
  • Wiederholung innerhalb des Moduls: Automatische Wiederholung durch das Netzwerk innerhalb des Moduls.
  • Suite-Wiederholung: Vollständige Wiederholung der zuvor fehlgeschlagenen Tests der Suite.

ITestSuite-Struktur

ITestSuite „Tradefed“ bezieht sich auf die gemeinsame Basisklasse für die Ausführung einer Suite. Es ist die von allen großen Testsuites verwendet werden, insbesondere dem Android-Kompatibilitätstest Suite (CTS) und Android Vendor Test Suite (VTS) und sorgt für eine einheitliche Ausführung in allen Suiten.

Wir bezeichnen ITestSuite manchmal als Suite Runner.

Der Suite-Runner führt bei der Ausführung die folgenden Schritte aus:

  1. Laden Sie die Konfiguration des Moduls und bestimmen Sie, welcher Satz ausgeführt werden soll.
  2. Führen Sie jedes Modul aus:

    1. Einrichtung auf Modulebene ausführen.
    2. Modultests ausführen.
    3. Teardown auf Modulebene ausführen.
  3. Melden Sie die Ergebnisse.

Einrichtung auf oberster Ebene

Aus Tradefed-Sicht ist ITestSuite nur ein weiterer Test. Es ist ein komplexes ist aber wie jeder andere IRemoteTest nur ein Test. Wenn Sie also Suite-Runner in einer Tradefed-Konfiguration zu verwenden, Muster der Konfiguration: build_provider wird ausgeführt, target_preparer, Test (in diesem Fall unsere Suite) und target_cleaner.

Diese Sequenz in der Tradefed-Konfiguration mit der ITestSuite ist die auf oberster Ebene.

Beispiel:

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

Modulmetadaten

Wir nennen Modulmetadaten zusätzliche Informationen, die im Testmodul angegeben sind. AndroidTest.xml Mit diesen Metadaten können Sie zusätzliche Informationen und die Module können anhand der Metadaten gefiltert werden.

Beispielmetadaten:

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

Beispielfilter für Metadaten:

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

Der obige Code würde alle Module mit einem Framework als Komponentenmetadaten ausführen.

Vollständiges AndroidTest.xml-Beispiel:

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

Modul parametrisiert

Ein spezieller Metadatentyp ist parameter.

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

Diese Metadaten geben an, dass das Modul in einem anderen mode zum Beispiel als Instant-App anstelle eines Standard-App-Modus.

Alle möglichen Modi und Parameter werden durch ModuleParameters und einen zugehörigen Handler in ModuleParametersHelper können Sie festlegen, dass das Modul im jeweiligen Modus ausgeführt wird.

Der Instant-App-Modus erzwingt beispielsweise die APK-Installation als Instant- .

Für die Parametrisierung muss sie in der Befehlszeile aktiviert werden. durch:

--enable-parameterized-modules

Es ist auch möglich, einen bestimmten Modus mit folgenden Methoden auszuführen:

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

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

Wenn eine parametrisierte Version eines Moduls ausgeführt wird, werden die Ergebnisse unter einen parametrisierten Modulnamen, z. B. CtsGestureTestCases[instant] im Vergleich zu Basis-CtsGestureTestCases.